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.#yes 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_instanceno llamaréto_s. Tendrá que hacer eso explícitamente:puts my_model_instance.to_sEn 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
.inspectes lo que estás buscando, ¡en mi opinión es mucho más fácil que.to_yaml!fuente
inspectes genial, pero a veces no lo suficientemente bueno. Por ejemploBigDecimalimprime la siguiente manera:#<BigDecimal:7ff49f5478b0,'0.1E2',9(18)>.Para tener un control total sobre lo que se imprime, puede redefinir
to_soinspectmé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