代码之家  ›  专栏  ›  技术社区  ›  Trip

关于更新Ruby中的所有内容的问题

  •  0
  • Trip  · 技术社区  · 14 年前

    我用这个语句创建了一个数组。。

    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
    

    为什么会这样?

    2 回复  |  直到 14 年前
        1
  •  1
  •   bnaul    14 年前

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

    http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M001787

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

        2
  •  1
  •   Trip    14 年前

    啊哈!这似乎奏效了。。

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