Creo que estoy tratando de obtener el equivalente en PHP de print_r()
(imprimir legible por humanos); en la actualidad, la salida sin procesar es:
ActiveRecord::Relation:0x10355d1c0
¿Qué tengo que hacer?
ruby-on-rails
ruby
cjm2671
fuente
fuente
Respuestas:
Por lo general
.inspect
, lo intento primero , si eso no me da lo que quiero, lo cambio.to_yaml
.Espero que ayude.
fuente
y record_name.attributes
.#y
es un alias deto_yaml
.defina el método to_s en su modelo. Por ejemplo
Luego, cuando vaya a imprimirlo con #puts, mostrará esa cadena con esas variables.
fuente
puts my_model_instance
no llamaréto_s
. Tendrá que hacer eso explícitamente:puts my_model_instance.to_s
En Rails puedes imprimir el resultado en la Vista usando la depuración 'Helper ActionView :: Helpers :: DebugHelper
resultados (en el navegador)
fuente
Estoy usando la gema awesome_print
Entonces solo tienes que escribir:
fuente
.inspect
es lo que estás buscando, ¡en mi opinión es mucho más fácil que.to_yaml
!fuente
inspect
es genial, pero a veces no lo suficientemente bueno. Por ejemploBigDecimal
imprime la siguiente manera:#<BigDecimal:7ff49f5478b0,'0.1E2',9(18)>
.Para tener un control total sobre lo que se imprime, puede redefinir
to_s
oinspect
métodos. O cree uno propio para no confundir demasiado a los futuros desarrolladores.Esto aplicará un método (es decir
to_s
) a todos los atributos. Este ejemplo eliminará lo feoBigDecimals
.También puede redefinir solo un puñado de atributos:
También puede crear una combinación de los dos o agregar asociaciones de alguna manera .
fuente
pp también hace el trabajo, no se requiere gema.
También puede imprimir dos instancias de un objeto:
fuente
Necesitas usar
debug(@var)
. Es exactamente como "print_r".fuente