rails中的模型更新方法

时间:2010-01-04 11:54:52

标签: ruby-on-rails database model

例如,我有一个表'post'和列'views'。当人们每次查看帖子时,将添加“视图”1.现在我的步骤是

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

有没有更好的方法来添加'观看'?

3 个答案:

答案 0 :(得分:5)

使用increment方法:

@post.increment!(:views)

你可以缩短

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

请注意,使用try方法会导致id的帖子记录可能不存在。

答案 1 :(得分:2)

这取决于您的需求。如果您只需要计算帖子的视图,那么我建议将该行移动到模型中的方法中。如果您需要更复杂的东西,您可能需要为视图引入模型,包括查看帖子的用户,视图的时间戳等。

答案 2 :(得分:1)

我是第二个中微子 - 您应该将该逻辑移动到模型内部的方法中。并且可能使用khelll建议使用增量。类似的东西:

class Post < ActiveRecord::Base
  ...

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

这样,如果您需要做更多的事情,那么您只需要更改模型方法。