Como posso transformar programaticamente um nome de classe,, FooBar
em um símbolo :foo_bar
,? por exemplo, algo assim, mas que lida com a caixa de camelo corretamente?
FooBar.to_s.downcase.to_sym
ruby-on-rails
ruby
metaprogramming
Josh Glover
fonte
fonte
Rails 4
.model_name
No Rails 4, ele retorna um
ActiveModel::Name
objeto que contém muitos atributos mais "semânticos" úteis, como:Portanto, você deve usar um deles se corresponderem ao significado desejado, o que provavelmente é o caso. Vantagens:
BTW,
human
tem a vantagem de estar ciente do I18N.fonte
model_name
também funciona para objetos de instância. Ex:foo_bar.model_name
. Se você quiser a lista completa, escrevafoo_bar.model_name.inspect
no console do Rails ou no seu depuradorclassify
,modelize
não parecem funcionar.primeiro: gem install activesupport
fonte
FooBar.to_s.underscore.to_sym
, já que estou tentando converter uma classe (que é uma constante) em um símbolo, que posso alimentar a Factory Girl . :)Aqui está o que eu busquei:
fonte
String#demodulize
que removerá a parte anterior::
.