【问题标题】:update_attributes for many objects with mongoid具有 mongoid 的许多对象的 update_attributes
【发布时间】:2012-11-22 18:10:25
【问题描述】:

可能是这样的:

@users = User.criteria.for_ids(params[:user_ids])
@users.update_all(:suspend => true)

代替:

for u in @users
 u.suspend = true
 u.update_attributes
end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 mongoid


    【解决方案1】:

    看看这个:

    # Updating one record:
    Person.update(15, :user_name => 'Samuel', :group => 'expert')
    
    # Updating multiple records:
    people = { 1 => { "first_name" => "David" }, 2 => { "first_name" => "Jeremy" } }
    Person.update(people.keys, people.values)
    

    在这里看到:http://apidock.com/rails/ActiveRecord/Base/update/class

    如果验证通过,则更新一个对象(或多个对象)并将其保存到数据库中。无论对象是否成功保存到数据库,都会返回结果对象。

    在你的情况下:

    User.update(params[:user_ids], :suspend => true)
    

    希望这会有所帮助!

    【讨论】:

    • Arf,没注意,抱歉... :/
    【解决方案2】:

    只要for_ids 方法返回一个条件(而不是一个数组),就可以使用update_all

    @users = User.criteria.for_ids(params[:user_ids])
    @users.update_all(:suspend => true)
    

    update_all 调用被转换为set 调用。有关详细信息,请参阅documentation

    【讨论】:

      猜你喜欢
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 2019-05-14
      • 1970-01-01
      相关资源
      最近更新 更多