¿Cómo puedo convertir programáticamente el nombre de una clase FooBar, en un símbolo :foo_bar,? por ejemplo, algo como esto, pero que maneja correctamente el caso camel?
FooBar.to_s.downcase.to_sym
ruby-on-rails
ruby
metaprogramming
Josh Glover
fuente
fuente

Carriles 4
.model_nameEn Rails 4, devuelve un
ActiveModel::Nameobjeto que contiene muchos atributos más "semánticos" útiles como:Por lo tanto, debe usar uno de esos si coinciden con el significado deseado, que es probablemente el caso. Ventajas:
Por cierto,
humantiene la ventaja de ser consciente de I18N.fuente
model_nametambién funciona, por ejemplo, objetos. Ejfoo_bar.model_name. : . Si desea la lista completa, escribafoo_bar.model_name.inspecten la consola de rieles o en su depuradorclassify,modelizeno parece funcionar.primero: gema instalar activesupport
fuente
FooBar.to_s.underscore.to_sym, ya que estoy tratando de convertir una clase (que es una constante) en un símbolo, que luego puedo alimentar a Factory Girl . :)Esto es lo que busqué:
fuente
String#demodulizeque eliminará la pieza anterior::.