Ruby on rails 将一个表的大子集插入到另一个表中

Ruby on rails 将一个表的大子集插入到另一个表中,ruby-on-rails,ruby-on-rails-3,arel,Ruby On Rails,Ruby On Rails 3,Arel,将Rails 2应用程序重写为Rails 3 我可以执行sql语句吗 INSERT INTO visits (col1, col2) SELECT col_a, col_b FROM clicks WHERE import_id = 1 使用arel和ruby(无循环)。我的第一个想法是,我能做到 Visit.create(Import.clicks) 或 或 遗憾的是,这没有起作用。有人知道更多吗?你应该看看。它应该允许您这样做: Visit.insert_select( :into

将Rails 2应用程序重写为Rails 3

我可以执行sql语句吗

INSERT INTO visits (col1, col2) SELECT col_a, col_b FROM clicks WHERE import_id = 1
使用arel和ruby(无循环)。我的第一个想法是,我能做到

Visit.create(Import.clicks)

遗憾的是,这没有起作用。有人知道更多吗?

你应该看看。它应该允许您这样做:

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

查看详细信息。

直接执行您编写的SQL有什么问题?只要有可能,您应该使用相同的编程语言。例如,缓存框架不知道应该更新import.visions等。感谢您的解释。:)好的,它将在rails 2中完成工作,activerecord导入以某种方式在rails 3中完成工作
Visit.insert(Click.select("col1, col2").where("import_id = 1"))
Visit.insert_select(
  :into => [:col1, :col2],
  :select => [:col_a, :col_b],
  :from => :clicks,
  :conditions => ['import_id = ?', 1],
)