【问题标题】:scopes should be in controller or model?范围应该在控制器或模型中?
【发布时间】:2017-05-05 01:32:50
【问题描述】:

我是 ruby​​ 和 rails 开发的新手,我有这个问题。如果我对创建的范围有疑问,请说 latest_records 它为我提供了客户的最新数据

现在在这种情况下使用范围的最佳做法是什么。范围应该在模型中还是在控制器中?

我阅读了一些在线文章,其中谈到了胖模型和瘦控制器,并且由于范围是与数据库相关的工作,所以我猜它们应该在模型中。

有什么建议或想法吗?

【问题讨论】:

    标签: ruby ruby-on-rails-4


    【解决方案1】:

    你猜对了。 范围属于模型,需要活动记录类对象才能处理。 范围只不过是一个activerecord 查询,它被分成几部分,它有助于使您的查询看起来优雅而枯燥。 例如 如果您想让用户收到已确认的电子邮件,您可以:

    User.where(confirmed: true)
    

    但是在您的用户模型中使用范围:

    scope :confirmed, -> { where(confirmed: true) }
    

    你会:

    User.confirmed
    

    更详细的请参考这个答案here

    【讨论】:

      【解决方案2】:

      范围只能在模型中定义,因此它必须在模型中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-02
        • 1970-01-01
        • 2016-03-24
        • 2011-07-06
        相关资源
        最近更新 更多