Saya memiliki nama kelas dan saya ingin membuat turunan dari kelas itu sehingga saya dapat mengulang melalui setiap atribut rails yang ada dalam skema kelas itu.
Bagaimana saya akan melakukan itu?
- Saya memiliki nama sebagai string kelas yang ingin saya periksa
- Saya rasa saya perlu membuat instance kelas agar saya bisa
- Ulangi atributnya dan cetaklah.
ruby
ruby-on-rails-3
mhenrixon.dll
sumber
sumber
eval
Jawaban:
Di rel, Anda bisa melakukan:
Dalam ruby murni:
dengan modul:
Anda akan menggunakan
sumber
Object.const_get('Foo::Bar')
tidak akan berhasil, sementaraconstantize
akan.clazz = 'Foo::Bar::Uber'
Sangat sederhana di Rails: gunakan
String#constantize
sumber
Coba ini:
Kemudian untuk mengulang melalui variabel instance objek:
sumber
Di ruby 2.0 dan, mungkin rilis sebelumnya,
Object.const_get
akan secara rekursif melakukan pencarian di namespace sepertiFoo::Bar
. Contoh di atas adalah ketika namespace diketahui sebelumnya dan menyoroti fakta yangconst_get
dapat dipanggil pada modul secara langsung dan bukan secara eksklusifObject
.sumber