2011-03-08 37 views
0

我正在和一位同事討論這種模式,每個人似乎都有自己的想法。認爲使用類型/代碼屬性似乎是一個很常見的情況,沒有標準化的解決方案。我想知道你是什麼?你如何處理使用AR的類型/代碼列(非STI)?

假設您在ActiveRecord模型上有一個非Single Table Inheritance類型/代碼列。你用什麼來指定類型和創建訪問器,作用域等等。散列符號,代碼散列,普通常量或...?

類似以下內容:

class Listing < ActiveRecord::Base 
    LISTING_TYPES = { 
    :sale => 1, 
    :rent => 2, 
    :lease => 3, 
    } 

    validates :listing_type, :inclusion => {:in => LISTING_TYPES.values} 
end 

在此先感謝。

回答

1

我使用simple_enum寶石。

class Listing < ActiveRecord::Base 
    as_enum :types, {:sale => 0, :rent => 1, :lease => 2} 
end 

寶石爲您創建所有的發現者,因此您可以通過查詢類型,而不是指數:

Listing.find_by_type(:sale) 
相關問題