我有一个带有author_id列的模型帖子,我也有一个带有user_id的登录用户
我列出所有帖子:
posts = Post.all
在这个帖子对象中,如果author_id等于当前的user_id,我想检查每个帖子,如果是,我想在对象中添加一个新字段
is_author => true
我知道我应该在我的模型中这样做,但由于几个原因,这是不可能的。
另一个解决方案是遍历所有帖子并添加新字段:
post_with_author = []
post.each do |post|
add post to new array with new field
end
但这似乎不是最好的选择。
这是否有一种正式的方式?
答案 0 :(得分:1)
由于您在Post上定义了author_id,因此可以执行
posts = Post.where(author_id: user_id).update_all(author: true)
这将构造并执行单个SQL更新语句,并且不会为每个帖子创建对象。这里需要注意的一点是,update_all会跳过所有验证和回调。