Ruby on Rails - 被视为违反SRP的范围

时间:2013-10-09 08:06:21

标签: ruby-on-rails design-patterns rails-activerecord

我目前正在研究一些最佳实践和方法,以便更好地封装CodeSchool(Rails 4模式)中的代码。

我遇到了“模型装饰器”的使用,您将视图特定逻辑移动到非活动记录模型,这些模型为模型的所有视图相关逻辑(格式化等)提供服务。这也符合单一责任原则。

鉴于以上为前提,如果仅用于查询报告,Rails scope是否被视为违反SRP?

例如

class Sales < ActiveRecord::Base
  scope :sales_per_day, -> { group(:sale_date).sum(:total_sale) }
end

请忽略示例中出现的任何错误,因为它只是一个报告示例。 该范围是否被视为违反可以移至装饰器模型的SRP,可能是处理报告的装饰模型?或者,无论情况如何,范围都不会违反SRP。

编辑:重新提出问题和示例,以适应我的实际问题。

1 个答案:

答案 0 :(得分:4)

没有。范围不是特定于视图的。它们只是查询构建器。这样获取的数据可以通过多种方式使用,例如batch processingapi's ...等,这些不一定是视图。