Вставьте большое подмножество одной таблицы в другую

Переписать приложение Rails 2 на Rails 3.

Могу ли я сделать заявление SQL

INSERT INTO visits (col1, col2) SELECT col_a, col_b FROM clicks WHERE import_id = 1

с арелом и рубином (без петли). Моя первая мысль была, что я мог сделать

Visit.create(Import.clicks)

или же

Visit.create(Click.select("col1, col2").where("import_id = 1"))

или же

Visit.insert(Click.select("col1, col2").where("import_id = 1"))

к сожалению, это не сработало. Кто-нибудь знает больше?

1 ответ

Решение

Вы должны посмотреть на ar-extensions. Это должно позволить вам сделать это:

Visit.insert_select(
  :into => [:col1, :col2],
  :select => [:col_a, :col_b],
  :from => :clicks,
  :conditions => ['import_id = ?', 1],
)

Проверьте документацию для деталей.

Другие вопросы по тегам