2010-01-04 103 views
2

例如,我有一个'post'和''views'列。当人们查看后各一次,“若干意见”将增加1.现在我的步骤是在rails中的模型更新方法

@post = Post.find_by_id(params[:id]) 
@post.views += 1 
@post.save 

有没有更好的方式来增加“若干意见”?

回答

5

使用increment方法:

@post.increment!(:views) 

你可以把它缩短

Post.find(params[:id]).try(:increment!,:views) 

注意使用try方法导致记录后与id可能不存在。

+1

如果它不存在,那么查找将失败,并出现异常 – Anton 2010-01-04 14:41:41

+0

这就是它的想法,以避免例外。 – khelll 2010-01-05 09:29:02

2

这取决于您的需求。如果您只需要对帖子的观点进行计数,那么我只是建议将该线移动到模型中的某个方法中。如果你需要更复杂的东西,你可能要引入一个模型视图,包括观看后,视图的时间戳等用户

1

我第二个中微子 - 你应该把这个逻辑转化为模型内的一个方法。并可能使用khelll使用增量的建议。喜欢的东西:

class Post < ActiveRecord::Base 
    ... 

    def increment_views 
    self.increment!(:views) 
    end 
    ... 
end 

这样,如果你需要做更多的东西,那么你只需要改变模型方法。

+0

犯下可怕的错误,感谢修复它khelll。 – 2010-01-04 15:56:36