Ich denke, ich versuche, das PHP-Äquivalent von print_r()
(für Menschen lesbar drucken) zu erhalten. Derzeit beträgt die Rohleistung:
ActiveRecord::Relation:0x10355d1c0
Was soll ich machen?
ruby-on-rails
ruby
cjm2671
quelle
quelle
Antworten:
Ich versuche im Allgemeinen zuerst
.inspect
, wenn das mir nicht das gibt, was ich will, wechsle ich zu.to_yaml
.Hoffentlich hilft das.
quelle
y record_name.attributes
.#y
ist ein Alias fürto_yaml
.Definieren Sie die to_s-Methode in Ihrem Modell. Beispielsweise
Wenn Sie es dann mit #puts drucken, wird diese Zeichenfolge mit diesen Variablen angezeigt.
quelle
puts my_model_instance
wird nicht anrufento_s
. Sie müssen das explizit tun:puts my_model_instance.to_s
In Rails können Sie das Ergebnis in der Ansicht mit dem Debug 'Helper ActionView :: Helpers :: DebugHelper ' drucken
Ergebnisse (im Browser)
quelle
Ich benutze das Juwel awesome_print
Sie müssen also nur Folgendes eingeben:
quelle
.inspect
ist das, wonach du suchst, es ist IMO viel einfacher als.to_yaml
!quelle
inspect
ist toll aber manchmal nicht gut genug. ZBBigDecimal
Drucke wie folgt :#<BigDecimal:7ff49f5478b0,'0.1E2',9(18)>
.Um die volle Kontrolle darüber zu haben, was gedruckt wird, können Sie
to_s
oderinspect
Methoden neu definieren . Oder erstellen Sie Ihre eigene, um zukünftige Entwickler nicht zu sehr zu verwirren.Dadurch wird eine Methode (dh
to_s
) auf alle Attribute angewendet. Dieses Beispiel wird das Hässliche loswerdenBigDecimals
.Sie können auch nur eine Handvoll Attribute neu definieren:
Sie können auch eine Mischung aus beiden oder erstellen irgendwie hinzufügen Assoziationen.
quelle
pp erledigt den Job auch, es ist kein Edelstein erforderlich.
Sie können auch zwei Instanzen eines Objekts drucken:
quelle
Sie müssen verwenden
debug(@var)
. Es ist genau wie "print_r".quelle