【发布时间】:2017-05-05 01:32:50
【问题描述】:
我是 ruby 和 rails 开发的新手,我有这个问题。如果我对创建的范围有疑问,请说 latest_records 它为我提供了客户的最新数据
现在在这种情况下使用范围的最佳做法是什么。范围应该在模型中还是在控制器中?
我阅读了一些在线文章,其中谈到了胖模型和瘦控制器,并且由于范围是与数据库相关的工作,所以我猜它们应该在模型中。
有什么建议或想法吗?
【问题讨论】:
标签: ruby ruby-on-rails-4
我是 ruby 和 rails 开发的新手,我有这个问题。如果我对创建的范围有疑问,请说 latest_records 它为我提供了客户的最新数据
现在在这种情况下使用范围的最佳做法是什么。范围应该在模型中还是在控制器中?
我阅读了一些在线文章,其中谈到了胖模型和瘦控制器,并且由于范围是与数据库相关的工作,所以我猜它们应该在模型中。
有什么建议或想法吗?
【问题讨论】:
标签: ruby ruby-on-rails-4
你猜对了。
范围属于模型,需要活动记录类对象才能处理。
范围只不过是一个activerecord 查询,它被分成几部分,它有助于使您的查询看起来优雅而枯燥。
例如
如果您想让用户收到已确认的电子邮件,您可以:
User.where(confirmed: true)
但是在您的用户模型中使用范围:
scope :confirmed, -> { where(confirmed: true) }
你会:
User.confirmed
更详细的请参考这个答案here
【讨论】:
范围只能在模型中定义,因此它必须在模型中。
【讨论】: