Я думаю, что пытаюсь получить PHP-эквивалент print_r()
(печатать в удобочитаемом виде); в настоящее время исходный результат:
ActiveRecord::Relation:0x10355d1c0
Что я должен делать?
ruby-on-rails
ruby
cjm2671
источник
источник
Ответы:
Обычно я сначала пробую
.inspect
, если это не дает мне того, что я хочу, я переключаюсь на.to_yaml
.Надеюсь, это поможет.
источник
y record_name.attributes
.#y
это псевдоним дляto_yaml
.определите метод to_s в вашей модели. Например
Затем, когда вы пойдете напечатать его с #puts, он отобразит эту строку с этими переменными.
источник
puts my_model_instance
звонить не будуto_s
. Вам нужно будет сделать это явно:puts my_model_instance.to_s
В Rails вы можете распечатать результат в представлении, используя отладочную команду ActionView :: Helpers :: DebugHelper.
результаты (в браузере)
источник
Я использую драгоценный камень awesome_print
Итак, вам просто нужно ввести:
источник
.inspect
это то, что вы ищете, это проще, чем ИМО.to_yaml
!источник
inspect
отлично, но иногда недостаточно. Например ,BigDecimal
печатает как это:#<BigDecimal:7ff49f5478b0,'0.1E2',9(18)>
.Чтобы иметь полный контроль над тем, что печатается, вы можете переопределить
to_s
илиinspect
методы. Или создайте свой, чтобы не слишком запутать будущих разработчиков.Это применит метод (т.е.
to_s
) ко всем атрибутам. Этот пример избавит от уродливогоBigDecimals
.Вы также можете переопределить только несколько атрибутов:
Вы также можете создать сочетание этих двух или как-то добавить ассоциации.
источник
pp тоже делает свою работу, никаких драгоценных камней не требуется.
Вы также можете распечатать два экземпляра объекта:
источник
Вам нужно использовать
debug(@var)
. Это точно так же, как «print_r».источник