2014-01-20 33 views
1

我有在多个控制器出现在我建立,因为它出现在多个页面上的应用程序的模型Project。本文中的where子句本身并不复杂,但我觉得这太大了,无法在需要具有这些约束的项目的每种方法上重复。在哪里放置常用的逻辑与回报率

我的问题是,在这里,如果可能的话,确实对Projects这个共同的呼声走?在.NET中,我有一个ProjectService类,其中一个方法将返回所有项目,另一个返回所有满足我的条件的项目。我是Rails的新手,所以我很努力地看到它适合哪里?

+3

退房范围:http://guides.rubyonrails.org/active_record_querying.html#scopes – depa

+1

作用域您的项目模型。 – sevenseacat

+0

@depa真棒,谢谢 – ediblecode

回答

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,多行等等,我更喜欢使用一个类方法,而当你被捕获时,如果我需要返回计数或类似的东西,我使用类方法。“

相关问题