Ruby on rails 轨道3和x2B;activerecord,实现;“大规模更新”;满足条件的所有记录的单个字段

Ruby on rails 轨道3和x2B;activerecord,实现;“大规模更新”;满足条件的所有记录的单个字段,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,在rails 3中,使用activerecord,是否有一种单一的查询方法可以将所有满足条件的记录的:hidden字段设置为TRUE。。。比如说,:条件=>[“phonenum=?”,一些电话号码] 如果单个查询无法完成,最佳方法是什么?与条件的可选第二个参数一起使用: Model.update_all({ hidden: true }, { phonenum: some_phone_number}) 更新不允许rails 3中出现条件。您可以使用范围和更新的组合 Model.where(ph

在rails 3中,使用activerecord,是否有一种单一的查询方法可以将所有满足条件的记录的:hidden字段设置为TRUE。。。比如说,
:条件=>[“phonenum=?”,一些电话号码]

如果单个查询无法完成,最佳方法是什么?

与条件的可选第二个参数一起使用:

Model.update_all({ hidden: true }, { phonenum: some_phone_number})

更新不允许rails 3中出现条件。您可以使用范围和更新的组合

Model.where(phonenum: some_phone_number).update_all(hidden: true)

参考:

如果要触发回调:

class ActiveRecord::Base
  def self.update_each(updates)
    find_each { |model| model.update(updates) }
  end

  def self.update_each!(updates)
    find_each { |model| model.update!(updates) }
  end
end
然后:


这是错误的。页面在方法列表上方的段落中显示“提供任何选项”,描述了可以放入
options
hash的各种选项。这不包括
update\u all()
上的
conditions
参数。我同意他错了。根据API Avatar.update_all['migrated_at=?',Time.now.utc],'migrated_at>?',1.week.ago]将在一周内将migrated=now设置为migrated_at所在的位置。根据rails 4文档,上述建议的方法确实是正确的做法--#在标题簿中使用'rails'更新所有书籍。where('title LIKE?','%rails%')。全部更新(作者:'David')如果一个值小于某个值,那么对于ex-update\u-all({:hidden=>true},{:date\u createdModel.where(“date\u-create<?”,a\u-saute\u-date.update\u-all(hidden:true)
Model.where(phonenum: some_phone_number).update_each(hidden: true)