這不是博客文章,這是一個問題!
說到類型我的意思是我們有類型值和類型描述。我們可以爲每種類型設置不同的類型(性別,大小,顏色等)和值集合。 我們有2種選擇:保持數據庫或應用程序中的類型。
對於我來說,保留整個表來存儲每種類型的值是多餘的。另一種方法是將類型存儲在帶有字段的單個表中:類型名稱,類型值,類型描述。 如果你想從應用程序修改它的值,保持db中的類型有用。但主要是當我添加新類型時,我正在改變應用程序行爲。
對我來說,更好的選擇是保持類型的應用程序。我有這樣一個YML配置文件(實際上它是SettingsLogic設置文件的一部分):你通常在軌道上保持類型?
types:
gender: "male female"
做這樣我就可以驗證表單輸入:
validates_inclusion_of :gender, :in => Settings.types.gender.split(/\s/)
至於我的應用程序是多語種我一直在描述本地化文件:
ru:
types:
gender:
male: "Мужской"
female: "Женский"
準備爲選擇我用這個輔助方法,選擇一個集合:
def genders
genders = []
Settings.types.gender.split(/\s/).each do |gender|
genders << [t("types.gender.#{gender}"), gender]
end
genders
end
這種方法的缺點是,我要保持在分貝長型值雄性和女性代替足夠米和˚F。
所以我現在想的哈希:
def genders
genders = []
gender_types = { :m => "male", :f => "female" }
gender_types.each do |key, value|
genders << [t("types.gender.#{value}"), key]
end
genders
end
但是現在我沒有答案在保持哈希就像我在配置文件中的字符串做。正如我所提到的,這個哈希應該不僅可以從輔助方法訪問,也可以在驗證中訪問。
所以,問題是足夠寬:你如何保持類型?什麼是最好或更好的方法?
我喜歡你的解決方案。謝謝! – Voldy 2010-07-06 16:45:39
我經常使用這種方法,因爲它很簡單,效果很好。很高興幫助你:-) – 2010-07-07 07:39:00