【问题标题】:model update method in railsrails中的模型更新方法
【发布时间】:2010-01-04 11:54:52
【问题描述】:

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

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

有没有更好的方法来添加“视图”?

【问题讨论】:

    标签: ruby-on-rails database model


    【解决方案1】:

    使用increment方法:

    @post.increment!(:views)
    

    你可以让它更短

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

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

    【讨论】:

    • 如果不存在,则查找将失败并出现异常
    • 就是这样,避免异常。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我是第二个中微子——你应该把这个逻辑移到模型内部的一个方法中。并且可能使用 khellll 的使用增量的建议。比如:

      class Post < ActiveRecord::Base
        ...
      
        def increment_views
          self.increment!(:views)
        end
        ...
      end
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多