哪个更好?命名作用域还是类方法?用例是用户在UI中选择一个列表框,并根据所选的项对其下面的表进行排序。这个功能贯穿整个应用程序,适用于许多模型。
最重要的是你要做感觉正确的事情,并坚持下去。如果某件事用一种方法似乎会更好,那就用一种方法。
从Rails 3开始,命名作用域和类方法可以几乎完全相同。然而,当我决定选择一个或另一个时,我倾向于遵循的唯一"规则":
- 当不需要参数时使用命名作用域
- 当需要参数时使用类方法
当我计划将它们链接在一起时,我也倾向于使用命名作用域,因为它们往往很短,逻辑最少。