例如,我有一個'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