例如,我有一个表'post'和列'views'。当人们每次查看帖子时,将添加“视图”1.现在我的步骤是
@post = Post.find_by_id(params[:id])
@post.views += 1
@post.save
有没有更好的方法来添加'观看'?
答案 0 :(得分:5)
使用increment
方法:
@post.increment!(:views)
你可以缩短
Post.find(params[:id]).try(:increment!,:views)
请注意,使用try
方法会导致id
的帖子记录可能不存在。
答案 1 :(得分:2)
这取决于您的需求。如果您只需要计算帖子的视图,那么我建议将该行移动到模型中的方法中。如果您需要更复杂的东西,您可能需要为视图引入模型,包括查看帖子的用户,视图的时间戳等。
答案 2 :(得分:1)
我是第二个中微子 - 您应该将该逻辑移动到模型内部的方法中。并且可能使用khelll建议使用增量。类似的东西:
class Post < ActiveRecord::Base
...
def increment_views
self.increment!(:views)
end
...
end
这样,如果您需要做更多的事情,那么您只需要更改模型方法。