2014-01-20 34 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,多行等等,我更喜歡使用一個類方法,而當你被捕獲時,如果我需要返回計數或類似的東西,我使用類方法。「

相關問題