Myślę, że próbuję uzyskać odpowiednik PHP print_r()
(drukuj czytelny dla człowieka); obecnie surowa produkcja to:
ActiveRecord::Relation:0x10355d1c0
Co powinienem zrobić?
ruby-on-rails
ruby
cjm2671
źródło
źródło
Odpowiedzi:
Generalnie najpierw próbuję
.inspect
, jeśli to nie daje mi tego, czego chcę, przełączam się na.to_yaml
.Mam nadzieję, że to pomoże.
źródło
y record_name.attributes
.#y
jest aliasem dlato_yaml
.zdefiniuj metodę to_s w swoim modelu. Na przykład
Następnie, gdy przejdziesz do wydrukowania go z #puts, wyświetli ten ciąg z tymi zmiennymi.
źródło
puts my_model_instance
nie zadzwonito_s
. Będziesz musiał to wyraźnie zrobić:puts my_model_instance.to_s
W Railsach można wydrukować wynik w widoku przy użyciu polecenia debugowania 'Helper ActionView :: Helpers :: DebugHelper
wyniki (w przeglądarce)
źródło
Używam awesome_print gem
Więc wystarczy wpisać:
źródło
.inspect
jest tym, czego szukasz, jest o wiele łatwiejsze niż IMO.to_yaml
!źródło
inspect
jest świetny, ale czasami nie jest wystarczająco dobry. NpBigDecimal
drukuje tak:#<BigDecimal:7ff49f5478b0,'0.1E2',9(18)>
.Aby mieć pełną kontrolę nad tym, co jest drukowane, możesz zmienić definicję
to_s
lubinspect
metody. Lub stwórz własny, aby nie zmylić zbytnio przyszłych programistów.Spowoduje to zastosowanie metody (tj.
to_s
) Do wszystkich atrybutów. Ten przykład pozbędzie się brzydotyBigDecimals
.Możesz także przedefiniować tylko kilka atrybutów:
Możesz także stworzyć połączenie tych dwóch lub w jakiś sposób dodać skojarzenia.
źródło
pp też wykonuje swoją pracę, nie jest wymagany żaden klejnot.
Możesz również wydrukować dwa wystąpienia obiektu:
źródło
Musisz użyć
debug(@var)
. Dokładnie tak, jak „print_r”.źródło