Ce n'est pas un article de blog, c'est une question!
En parlant de types, je veux dire que nous avons une description de type et de type. Nous pouvons avoir différents types (genre, taille, couleur et etc.) et une collection de valeurs pour chaque type. Nous avons 2 choix: garder les types dans la base de données ou dans l'application.
Pour moi garder la table entière pour stocker les valeurs de type pour chaque type est redondant. Une autre méthode consiste à stocker des types dans une seule table avec des champs: nom du type, valeur du type, description du type. Pour garder le type dans db utile si vous souhaitez modifier ses valeurs à partir de l'application. Mais surtout quand j'ajoute un nouveau type, je change le comportement de l'application.
Pour moi, le meilleur choix est de garder les types dans l'application. Je fichier de configuration YML comme celui-ci (en fait, il est une partie de SettingsLogic fichier de paramètres):Où gardez-vous habituellement les types dans les rails?
types:
gender: "male female"
Faire de cette façon, je peux valider les entrées de formulaire:
validates_inclusion_of :gender, :in => Settings.types.gender.split(/\s/)
En ce qui concerne mon application est multilingue Je garde les descriptions dans les fichiers de localisation:
ru:
types:
gender:
male: "Мужской"
female: "Женский"
pour préparer une collection de choix pour cette sélection que j'utilise la méthode d'aide:
def genders
genders = []
Settings.types.gender.split(/\s/).each do |gender|
genders << [t("types.gender.#{gender}"), gender]
end
genders
end
L'inconvénient de cette approche est que je dois garder à type long db valeurs mâle et femme au lieu de suffisamment m et f.
Je pense donc d'un hachage maintenant:
def genders
genders = []
gender_types = { :m => "male", :f => "female" }
gender_types.each do |key, value|
genders << [t("types.gender.#{value}"), key]
end
genders
end
Mais pour l'instant je n'ai pas la réponse où garder hash comme je le fais avec des chaînes dans le fichier de configuration. Comme je l'ai mentionné, ce hachage devrait être accessible non seulement à partir de la méthode d'assistance, mais aussi dans les validations. Donc, la question est assez large: Comment gardez-vous les types? Quelle est la meilleure ou la meilleure approche?
J'aime votre solution. Merci! – Voldy
J'utilise cette approche très souvent parce que c'est simple et fonctionne très bien. content de vous aider :-) –