我使用这个语句创建了一个数组..
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
为什么会这样?
答案 0 :(得分:1)
当你在ActiveRecord实例数组中调用update_all时,它实际上是一个静态方法。
你的电话应该是User.update_all(或者CardSignup,或者你的类叫什么),然后是更新,然后是条件。
请参阅:http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001787
编辑缺乏明确性:拥有该值数组只是有用的,因为它允许您构造一个条件以传入update_all,形式为“id IN”(#{users_who_promoted.map {| u | u.id }。加入(”,”)})”。如果您认为这不会成为应用程序性能的瓶颈,那么简单地更新和保存每个模型对象可能更具可读性。
答案 1 :(得分:1)
啊哈!这似乎有用..
unless @organization.card_signups.empty?
@organization.card_signups.update_all("credit_status = false")
end