2015-06-19 22 views
1

如何將demeter的法則應用於此代碼?Demeter在`includes`和`group`查詢中的法則

我知道如何通過創建單獨的方法,範圍來做到這一點......但我不知道如何用這樣的查詢來做到這一點。

pages = Seo::Page.active 
    .path_with(category) 
    .includes(seo_area: :suburb) 
    .group('suburbs.state') 

scope :path_with, -> category { where('path like ?', "/#{category}/%") }

回答

0

您可以創建類的方法或新的範圍封裝在Seo::Page類的邏輯。

def self.grouped(category) 
    active 
    .path_with(category) 
    .includes(seo_area: :suburb) 
    .group('suburbs.state') 
end 

pages = Seo::Page.grouped(category)