我有一个简单的has_many
关联,我想将一个属性从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
答案 0 :(得分:33)
我相信您正在寻找update_all。
在您的示例中,您将其重写为
Post.update_all("privacy = 'private'", ["user_id = ?", user.id])
或者@ jenjenut233指出
user.posts.update_all("privacy = 'private'")