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”)