2010-01-04 84 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