Какой самый быстрый способ создания массовых ассоциаций HABTM в Rails?

У меня есть две таблицы с отношением 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:

bars_foos Columns (1.1ms) ПОКАЗАТЬ ПОЛЯ ОТbars_foos SQL (0,6 мс) INSERT INTObars_foos (bar_id, foo_id) ЦЕННОСТИ (100, 117200)

Я посмотрел на ар-расширения, ноimport Кажется, что функция не работает без модели (Model.import), что исключает ее использование для таблицы соединений.

Нужно ли писать SQL, или у Rails есть более симпатичный способ?

Ответы на вопрос(4)

Ваш ответ на вопрос