Ruby on rails ActiveRecord中多个模型的批量更新属性?

Ruby on rails ActiveRecord中多个模型的批量更新属性?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有一个简单的有许多关联,我想将一个属性从public更改为private关联对象。最好的方法是什么: class User < ActiveRecord::Base has_many :posts end class Post < ActiveRecord::Base belongs_to :user end user = User.first #=> #<User...> user.posts.count #=> 100 # something

我有一个简单的
有许多关联,我想将一个属性从
public
更改为
private
关联对象。最好的方法是什么:

class User < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :user
end

user = User.first #=> #<User...>
user.posts.count #=> 100
# something like this:
user.posts.bulk_update_attribute("privacy", "private") #=> 1 DB call
class用户#
user.posts.count#=>100
#大概是这样的:
user.posts.bulk_update_属性(“隐私”、“私有”)#=>1db调用

我相信您正在寻找

在您的示例中,您将其重写为

Post.update_all("privacy = 'private'", ["user_id = ?", user.id])
或者正如@jenut233所指出的那样

user.posts.update_all("privacy = 'private'")

美好的我想我应该这么想!请注意,这不会执行验证/回调(这可能是问题,也可能不是问题)。您还可以编写
user.posts.update\u all(隐私:“private”)