0

我发现我经常喜欢编写只查询数据库并返回结果的方法。这对于复杂的过滤器或查询“链接”非常有用。例如,这是一个Clazz代表学术班级学生的模型。Clazz有很多Enrollments。所以我写了这个方法来保持我的代码干燥,因为我经常使用这个标准。

class Clazz
    def cash_enrollments
        enrollments.where(payment_type: 'cash')
    end
end

随着我对单元测试的深入了解,我注意到这种模式存在问题,因为它与数据库的耦合过于紧密。在数据库事务运行时测试大型数据集时,问题会更加严重。

是否有“单元测试友好”的方式来重写此代码?还有另一种更好的常见模式吗?

4

1 回答 1

0

你可以试试这个http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/提取查询对象或服务对象

于 2013-11-07T21:09:47.837 回答