【发布时间】:2010-01-04 11:54:52
【问题描述】:
例如,我有一个表“post”和列“views”。当人们每次查看帖子时,都会添加'views' 1.现在我的步骤是
@post = Post.find_by_id(params[:id])
@post.views += 1
@post.save
有没有更好的方法来添加“视图”?
【问题讨论】:
标签: ruby-on-rails database model
例如,我有一个表“post”和列“views”。当人们每次查看帖子时,都会添加'views' 1.现在我的步骤是
@post = Post.find_by_id(params[:id])
@post.views += 1
@post.save
有没有更好的方法来添加“视图”?
【问题讨论】:
标签: ruby-on-rails database model
使用increment方法:
@post.increment!(:views)
你可以让它更短
Post.find(params[:id]).try(:increment!,:views)
注意使用try 方法会导致带有id 的帖子记录可能不存在。
【讨论】:
这取决于您的需求。如果您只需要计算帖子的浏览量,那么我建议将该行移至模型中的方法中。如果您需要更复杂的东西,您可能需要为视图引入模型,包括查看帖子的用户、视图的时间戳等。
【讨论】:
我是第二个中微子——你应该把这个逻辑移到模型内部的一个方法中。并且可能使用 khellll 的使用增量的建议。比如:
class Post < ActiveRecord::Base
...
def increment_views
self.increment!(:views)
end
...
end
这样,如果您需要做更多的事情,那么您只需要更改模型方法。
【讨论】: