Ruby on rails 关于Ruby中所有更新的问题

Ruby on rails 关于Ruby中所有更新的问题,ruby-on-rails,Ruby On Rails,我使用此语句创建了一个数组 users_who_promoted = @organization.card_signups.select {|c| c.credit_status == true } 但当我这么做的时候: users_who_promoted.update_all("credit_status = false") 我犯了一个大错误: NoMethodError: undefined method `update_all' for #<Array:0x32377bc>

我使用此语句创建了一个数组

users_who_promoted = @organization.card_signups.select {|c| c.credit_status == true }
但当我这么做的时候:

users_who_promoted.update_all("credit_status = false")
我犯了一个大错误:

NoMethodError: undefined method `update_all' for #<Array:0x32377bc>
from (irb):25
NoMethodError:未定义的方法“update\u all”#
起始(irb):25

这是为什么?

您在ActiveRecord实例数组上调用update\u all,而实际上它是一个静态方法

您的调用应该是User.update\u all(或CardSignup,或调用您的类的任何内容),然后是更新,然后是条件

见:


编辑以缺乏清晰性:拥有该值数组只有在它允许您构造一个条件来传递以更新形式为“id in(#{users_who_promoted.map{| u | u.id}.join(“,”})”的_all”的条件时才有用。如果您认为这不会成为应用程序性能的瓶颈,那么简单地更新和保存每个模型对象可能会更具可读性。

Aha!这似乎奏效了

unless @organization.card_signups.empty?
  @organization.card_signups.update_all("credit_status = false")
end

有趣…这在我的Rails版本(2.1.2)中似乎不起作用,但我想这就是我生活在石器时代所得到的。这是2.3.5。。但是它本质上是您在直接从模型中使用该方法时建议的,在本例中,该方法与组织模型相关。