例如,我有一个'post'和''views'列。当人们查看后各一次,“若干意见”将增加1.现在我的步骤是在rails中的模型更新方法
@post = Post.find_by_id(params[:id])
@post.views += 1
@post.save
有没有更好的方式来增加“若干意见”?
例如,我有一个'post'和''views'列。当人们查看后各一次,“若干意见”将增加1.现在我的步骤是在rails中的模型更新方法
@post = Post.find_by_id(params[:id])
@post.views += 1
@post.save
有没有更好的方式来增加“若干意见”?
使用increment
方法:
@post.increment!(:views)
你可以把它缩短
Post.find(params[:id]).try(:increment!,:views)
注意使用try
方法导致记录后与id
可能不存在。
这取决于您的需求。如果您只需要对帖子的观点进行计数,那么我只是建议将该线移动到模型中的某个方法中。如果你需要更复杂的东西,你可能要引入一个模型视图,包括观看后,视图的时间戳等用户
我第二个中微子 - 你应该把这个逻辑转化为模型内的一个方法。并可能使用khelll使用增量的建议。喜欢的东西:
class Post < ActiveRecord::Base
...
def increment_views
self.increment!(:views)
end
...
end
这样,如果你需要做更多的东西,那么你只需要改变模型方法。
犯下可怕的错误,感谢修复它khelll。 – 2010-01-04 15:56:36
如果它不存在,那么查找将失败,并出现异常 – Anton 2010-01-04 14:41:41
这就是它的想法,以避免例外。 – khelll 2010-01-05 09:29:02