边栏上的红宝石 - 将一个表的大子集插入到另一个表



A 将 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.create(Click.select("col1, col2").where("import_id = 1"))

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

可悲的是,这没有奏效。有谁知道更多吗?

你应该看看ar-extensions。它应该允许你这样做:

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

有关详细信息,请查看文档。

相关内容

  • 没有找到相关文章