刷新给定模型属性的最佳方法是什么?
即,功能上,我想要这个:
post.body = Post.find(post.id).body
语法更好。也许
post.reload_body!
修改:我只想重新加载单个属性(不是一次性所有属性)
答案 0 :(得分:11)
打败我为什么要做这样的事情,但是:
def reload_attribute(attr)
value = self.class.where(:id=>id).select(attr).first[attr]
self[attr] = value
end
这会发出SELECT
只检索一列并将其值分配给当前模型实例中的属性。打电话给(例如):
post = Post.find(1)
post.reload_attribute(:body)
但实际上,你应该选择post.reload
(doc)。除非你有非常宽的列,在执行SELECT *