Étant donné un symbole dans les rails, comment puis-je obtenir une classe? Donc, je pourrais appeler quelque chose comme:rails: Comment convertir un symbole en classe
give_class(:post).find(:all)
ou similaire.
Étant donné un symbole dans les rails, comment puis-je obtenir une classe? Donc, je pourrais appeler quelque chose comme:rails: Comment convertir un symbole en classe
give_class(:post).find(:all)
ou similaire.
D'abord, convertir en chaîne.
class_name = symbol.to_s
De là, vous aurez besoin de formater la chaîne en un nom de classe appropriée en utilisant les méthodes fournies par ActiveSupport's Inflector.
camelize
se tourneront 'my_module'
en 'MyModule'
classify
se transformeront en 'my_models'
'MyModel'
camelize
est plus probablement celui que vous voulez, compte tenu de l'extrait de code.
Ensuite, utilisez la méthode constantize
:
klass = class_name.constantize
classe!
Je cherchais stackoverflow pour cette réponse et ne pouvait pas trouver comment je formulé cherchais, alors je pensais Q & moi-même:
La réponse ci-dessus était correct, mais j'ai trouvé acutally les documents qui expliquent un peu mieux:
Il existe essentiellement deux méthodes:
De là, vous appelez constantize, et Viola! tu as ta classe.
Mhm. Cela dépend si vous allez passer le nom de classe réel ': MyClass', ou préférez le format': my_class'. – Matchu
Oui, c'est vrai. C'était la partie qui me faisait trébucher. Surtout la différence entre singulier et pluriel. – dpb
On dirait qu'il existe une version mise à jour pour Rails 3 http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html – christophercotton