У меня есть две таблицы с отношениями HABTM в Rails. Что-то вроде следующего:
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
требуется следующая запись:
bars_foos Столбцы (1.1ms) SHOW ПОЛЯ ОТ
bars_foos
SQL (0.6ms) INSERT INTObars_foos
(bar_id
,foo_id
) ЗНАЧЕНИЯ (100, 117200)
Я просмотрел ар-расширения, но функция import
, похоже, не работает без модели (Model.import), которая исключает ее использование для таблицы соединений.
Нужно ли мне писать SQL, или у Rails более красивый способ?