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?