在ActiveRecord中使用连接表的条件update_all?

时间:2011-03-16 19:58:53

标签: sql ruby-on-rails activerecord

以下查询返回我要更新的AR对象集合:

Variant.all(:joins => { :candy_product => :candy }, :conditions => "candies.name = 'Skittles'")

我正在尝试做以下事情:

Variant.update_all(:price => 5, :joins => { :candy_product => :candy }, :conditions => "candies.name = 'Skittles'")

这应该只更新从原始查询返回的变体的价格。这可能是AR还是我必须编写SQL?这是一个非常大的集合,所以迭代的任何东西都出来了。

使用Rails 2.3.4。

1 个答案:

答案 0 :(得分:4)

正如@FrançoisBeausoleil指出的那样,我们应该使用scoped

Variant.scoped(:joins => { :candy_product => :candy }, :conditions => "candies.name = 'Skittles'").update_all(:price => 5)