Rails で HABTM 関係を持つ 2 つのテーブルがあります。次のようなもの:
class Foo < ActiveRecord::Base
has_and_belongs_to_many :bars
end
class Bar < ActiveRecord::Base
has_and_belongs_to_many :foos
end
今、私は新しいFoo
オブジェクトを持っており、事前にロードした何千ものバーをそれに一括割り当てしたいと考えています:
@foo = Foo.create
@bars = Bar.find_all_by_some_attribute(:a)
これを行う最速の方法は何ですか? 私はもう試した:
@foo.bars = @bars
@foo.bars << @bars
そして、どちらも非常に遅く、それぞれに次のようなエントリがありますbar
:
bar_foos 列 (1.1 ミリ秒)
bars_foos
SQL からフィールドを表示 (0.6 ミリ秒) INSERT INTObars_foos
(bar_id
,foo_id
) 値 (100, 117200)
私は ar-extensions を見ましたがimport
、結合テーブルでの使用を妨げるモデル (Model.import) なしでは関数は機能しないようです。
SQL を書く必要がありますか、それとも Rails にはもっときれいな方法がありますか?