我目前正在研究一些最佳实践和方法,以便更好地封装CodeSchool(Rails 4模式)中的代码。
我遇到了“模型装饰器”的使用,您将视图特定逻辑移动到非活动记录模型,这些模型为模型的所有视图相关逻辑(格式化等)提供服务。这也符合单一责任原则。
鉴于以上为前提,如果仅用于查询报告,Rails scope
是否被视为违反SRP?
例如
class Sales < ActiveRecord::Base
scope :sales_per_day, -> { group(:sale_date).sum(:total_sale) }
end
请忽略示例中出现的任何错误,因为它只是一个报告示例。 该范围是否被视为违反可以移至装饰器模型的SRP,可能是处理报告的装饰模型?或者,无论情况如何,范围都不会违反SRP。
编辑:重新提出问题和示例,以适应我的实际问题。
答案 0 :(得分:4)
没有。范围不是特定于视图的。它们只是查询构建器。这样获取的数据可以通过多种方式使用,例如batch processing
,api's
...等,这些不一定是视图。