我有一个模型Project
出现在我正在构建的应用程序中的多个控制器中,因为它出现在多个页面上。 where
这个句子本身并不复杂,但我觉得它太大了,不能重复每个需要有这些约束的项目的方法。
我的问题是,如果可能的话,Projects
这个常见的呼吁会去哪里?在.NET
中,我有一个ProjectService
类,其中一个方法可以返回所有项目,另一个返回满足我条件的所有项目。我是Rails的新手,所以我很难看到它适合的位置?
答案 0 :(得分:4)
您可以使用类方法或范围。
class Project < ActiveRecord::Base
# example for a scope
scope :awkward_projects,where(awkward: true)
# example for a class method.
def self.awkward_projects
where(awkward: true)
end
end
在SO答案中做过的事情是非常安全的。请阅读以下内容并仔细选择。
引用answer
“通常,我使用简单单行的范围条目来过滤我的结果集。但是,如果我在”范围“中做任何复杂的事情,可能需要详细的逻辑,lambdas,多行等,我更喜欢使用类方法。当你捕获时,如果我需要返回计数或类似的东西,我使用类方法。“