2010-07-14 6 views
1

J'ai ajouté quelques constantes à un modèle, par exemple MyModel.rb comme indiqué ci-dessous.Rails constantes du modèle avec hachage

MY_CONST = { 
    :foo =>"Some Name for Foo", 
    :bar =>"Some Name for Bar" 
    } 

Aussi j'ai sauvé chaîne foo comme la valeur de la colonne dans un enregistrement de la table.

@m = MyModel.find(1) 
@m.column_name #=> foo 

Maintenant, à mon avis, j'ai besoin de montrer « un nom pour Foo » comme la sortie pour @m.column_name au lieu de foo

J'ai essayé MyModel::MY_CONST[:foo] et imprime "Some Name for Foo" comme la sortie. Mais je ne sais pas comment passer @m.column_name à MyModel::MY_CONST[....] dynamiquement.

Répondre

2

Try

MyModel::MY_CONST[@m.column_name] 

ou

MyModel::MY_CONST[@m.column_name.to_sym] 
+0

J'ai essayé 'MyModel :: MY_CONST [@ m.column_name]' il n'a jamais travaillé pour moi, (c'est pourquoi j'ai posté la question) Mais ' MyModel :: MY_CONST [@ m.column_name.to_sym] 'fonctionne, merci beaucoup. – randika

+0

si vous voulez exécuter 'MyModel :: MY_CONST [@ m.column_name]' changer ': foo =>" Un nom pour Foo ",' '' 'foo" => "Un nom pour Foo", ' – Salil

+0

Merci beaucoup Salil. Je comprends maintenant, je n'y ai jamais vraiment pensé. – randika

Questions connexes