Acho que estou tentando obter o equivalente em PHP de print_r()
(print human-readable); no momento, a saída bruta é:
ActiveRecord::Relation:0x10355d1c0
O que devo fazer?
ruby-on-rails
ruby
cjm2671
fonte
fonte
Respostas:
Geralmente tento primeiro
.inspect
, se isso não me der o que quero, mudo para.to_yaml
.Espero que ajude.
fonte
y record_name.attributes
.#y
é um alias parato_yaml
.defina o método to_s em seu modelo. Por exemplo
Então, quando você for imprimi-lo com #puts, ele exibirá aquela string com essas variáveis.
fonte
puts my_model_instance
não vai ligarto_s
. Você terá que fazer isso explicitamente:puts my_model_instance.to_s
No Rails você pode imprimir o resultado na View usando o debug 'Helper ActionView :: Helpers :: DebugHelper
resultados (no navegador)
fonte
Estou usando a gema awesome_print
Então você só precisa digitar:
fonte
.inspect
é o que você está procurando, é muito mais fácil do que IMO.to_yaml
!fonte
inspect
é ótimo, mas às vezes não é bom o suficiente. Por exemplo,BigDecimal
imprime assim:#<BigDecimal:7ff49f5478b0,'0.1E2',9(18)>
.Para ter controle total sobre o que é impresso, você pode redefinir
to_s
ouinspect
métodos. Ou crie o seu próprio para não confundir demais os desenvolvedores futuros.Isso aplicará um método (isto é
to_s
) a todos os atributos. Este exemplo vai acabar com o feioBigDecimals
.Você também pode redefinir apenas alguns atributos:
Você também pode criar uma combinação dos dois ou, de alguma forma, adicionar associações.
fonte
pp também faz o trabalho, não é necessário exigir nenhuma gema.
Você também pode imprimir duas instâncias de um objeto:
fonte
Você precisa usar
debug(@var)
. É exatamente como "print_r".fonte