我想找到一個乾淨的方法來維護數據庫和模型中的枚舉。在rails模型和數據庫中不斷枚舉
說我有一個類型的
class Foo < ActiveRecord::Base
TYPES = {1 => :hello, 2 => :hi}
end
我走得更遠,寫了一個枚舉類,所以我可以做的Foo :: TYPES.HELLO恆定枚舉一個ActiveRecord類來獲得1或富: :TYPES.HI得到2.
我想要這些類型的數據庫,所以我可以做連接。我目前正在創建一個FooType模型,並且讓Foo belongs_to:foo_type,所以Foo將有一個foo_type_id字段。
class Foo < ActiveRecord::Base
belongs_to :foo_type # 1 -> hello, 2 -> hi
end
然而,這是不方便的,因爲:
- 測試環境打破,除非我播種測試數據庫每次。類型被假定爲常量,因此它們直接用於代碼中。 這可能是最大的痛苦
- 如果我做一個靜態的枚舉拉foo_type_ids從數據庫到模型中,這也打破了測試
- 如果我添加一個新的類型,我在每一個數據庫 ,以反映此
- 每個環境需要與類型
應該明確這些類是ActiveRecords。我想要做的是保持模型中定義的常量與db(不帶靜態枚舉器)之間的一致性, – phillee 2011-04-20 15:50:49