Was ist der schnellste Weg, um Massen-HABTM-Assoziationen in Rails zu erstellen?

Ich habe zwei Tabellen mit einer HABTM-Beziehung in Rails. So etwas wie das folgende:

class Foo < ActiveRecord::Base
  has_and_belongs_to_many :bars
end

class Bar < ActiveRecord::Base
  has_and_belongs_to_many :foos
end

Jetzt habe ich eine neueFoo Objekt und möchten Tausende von Balken massenweise zuweisen, die ich vorinstalliert habe:

@foo = Foo.create
@bars = Bar.find_all_by_some_attribute(:a)

Wie geht das am schnellsten? Ich habe es versucht:

@foo.bars = @bars
@foo.bars << @bars

Und beide laufen sehr langsam, mit einem Eintrag wie dem folgenden für jedenbar:

bars_foos Spalten (1.1ms) FELDER ANZEIGEN VONbars_foos SQL (0.6ms) INSERT INTObars_foos (bar_id, foo_id) WERTE (100, 117200)

Ich habe mir ar-extensions angeschaut, aber dieimport Funktion scheint ohne ein Modell (Model.import) nicht zu funktionieren, was die Verwendung für eine Join-Tabelle ausschließt.

Muss ich SQL schreiben oder hat Rails eine schönere Art?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage