Saya rasa saya mencoba untuk mendapatkan PHP yang setara dengan print_r()
(print human-readable); saat ini keluaran mentahnya adalah:
ActiveRecord::Relation:0x10355d1c0
Apa yang harus saya lakukan?
ruby-on-rails
ruby
cjm2671
sumber
sumber
Jawaban:
Saya biasanya pertama kali mencoba
.inspect
, jika itu tidak memberi saya apa yang saya inginkan, saya akan beralih ke.to_yaml
.Semoga membantu.
sumber
y record_name.attributes
.#y
adalah alias untukto_yaml
.tentukan metode to_s dalam model Anda. Sebagai contoh
Kemudian ketika Anda pergi untuk mencetaknya dengan #puts itu akan menampilkan string itu dengan variabel-variabel itu.
sumber
puts my_model_instance
tidak akan meneleponto_s
. Anda harus secara eksplisit melakukan itu:puts my_model_instance.to_s
Di Rails Anda bisa mencetak hasil di View dengan menggunakan debug 'Helper ActionView :: Helpers :: DebugHelper
hasil (di browser)
sumber
Saya menggunakan permata awesome_print
Jadi Anda hanya perlu mengetik:
sumber
.inspect
adalah apa yang Anda cari, IMO jauh lebih mudah daripada.to_yaml
!sumber
inspect
bagus tapi terkadang tidak cukup baik. MisalnyaBigDecimal
mencetak seperti ini:#<BigDecimal:7ff49f5478b0,'0.1E2',9(18)>
.Untuk memiliki kendali penuh atas apa yang dicetak, Anda dapat mendefinisikan ulang
to_s
atauinspect
metode. Atau buat sendiri untuk tidak terlalu membingungkan developer di masa depan.Ini akan menerapkan metode (yaitu
to_s
) ke semua atribut. Contoh ini akan menyingkirkan yang jelekBigDecimals
.Anda juga dapat menentukan ulang beberapa atribut saja:
Anda juga dapat membuat campuran dari dua atau entah bagaimana menambahkan asosiasi.
sumber
pp melakukan pekerjaan itu juga, tidak ada permata yang dibutuhkan.
Anda juga dapat mencetak dua contoh objek:
sumber
Anda perlu menggunakan
debug(@var)
. Ini persis seperti "print_r".sumber