¿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_name
En Rails 4, devuelve un
ActiveModel::Name
objeto 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,
human
tiene la ventaja de ser consciente de I18N.fuente
model_name
también funciona, por ejemplo, objetos. Ejfoo_bar.model_name
. : . Si desea la lista completa, escribafoo_bar.model_name.inspect
en la consola de rieles o en su depuradorclassify
,modelize
no 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#demodulize
que eliminará la pieza anterior::
.