我有類似以下的類:第二十二條軍規:Rails的數據庫遷移不運行時類常量使數據庫調用
class FruitKinds < ActiveRecord::Base
Apple = FruitKinds.find(:all).find { |fk|
fk.fruit_name == :apple.to_s
}
# ... other fruits
# no methods
end
蘋果等水果的具體通常用作默認值在其他地方我應用程序,所以我想用一種方便的方式以可枚舉的,靜態的方式來引用它們。
但是,有一個問題。有一個數據庫遷移來創建FruitKinds
表,並使用Apple
之類的特殊Fruits
進行填充。當數據庫遷移運行初始化FruitKinds時,rake
無法啓動,因爲它首先加載FruitKinds
,然後調用數據庫,這當然會失敗,因爲FruitKinds表尚不存在。
解決方法是在遷移運行時將FruitKinds :: *字段註釋掉,但這太可怕了。什麼是最好的方法來做到這一點?
難道你不能寫自我。蘋果,使它最多擊中數據庫一次?您可以將該值保存到某個字段並具有attr_accessor。 – 2009-08-03 21:33:11