Bagaimana cara saya secara terprogram mengubah nama kelas FooBar
,, menjadi simbol :foo_bar
,? Misalnya sesuatu seperti ini, tapi itu menangani kotak unta dengan benar?
FooBar.to_s.downcase.to_sym
ruby-on-rails
ruby
metaprogramming
Josh Glover
sumber
sumber
Rel 4
.model_name
Di Rails 4, ia mengembalikan
ActiveModel::Name
objek yang berisi lebih banyak atribut "semantik" yang berguna seperti:Jadi Anda harus menggunakan salah satu dari mereka jika cocok dengan makna yang Anda inginkan, yang kemungkinan besar terjadi. Keuntungan:
BTW,
human
memiliki keuntungan karena sadar I18N.sumber
model_name
juga berfungsi untuk objek contoh. Ex:foo_bar.model_name
. Jika Anda ingin daftar lengkap tulisfoo_bar.model_name.inspect
di konsol rel atau debugger Andaclassify
,modelize
tampaknya tidak bekerja.pertama: gem instal aktif dukungan
sumber
FooBar.to_s.underscore.to_sym
, karena saya mencoba mengonversi kelas (yang merupakan konstanta) menjadi simbol, yang kemudian dapat saya berikan ke Factory Girl . :)Inilah yang saya lakukan:
sumber
String#demodulize
yang akan menghapus part sebelumnya::
.