Comment puis-je transformer par programme un nom de classe,, FooBar
en symbole :foo_bar
,? par exemple quelque chose comme ça, mais qui gère correctement le cas de chameau?
FooBar.to_s.downcase.to_sym
ruby-on-rails
ruby
metaprogramming
Josh Glover
la source
la source
Rails 4
.model_name
Dans Rails 4, il renvoie un
ActiveModel::Name
objet qui contient de nombreux attributs plus "sémantiques" utiles tels que:Vous devriez donc en utiliser un s'il correspond à la signification souhaitée, ce qui est probablement le cas. Avantages:
BTW,
human
a l'avantage d'être conscient I18N.la source
model_name
fonctionne également pour les objets par exemple. Ex:foo_bar.model_name
. Si vous voulez que la liste complète soit écritefoo_bar.model_name.inspect
dans la console des rails ou votre débogueurclassify
,modelize
ne semble pas fonctionner.first: gem install activesupport
la source
FooBar.to_s.underscore.to_sym
Cela devrait être , puisque j'essaie de convertir une classe (qui est une constante) en un symbole, que je peux ensuite transmettre à Factory Girl . :)Voici ce que j'ai fait:
la source
String#demodulize
qui supprimera la pièce avant::
.