Je pense que j'essaie d'obtenir l'équivalent PHP de print_r()
(print human-readable); actuellement, la sortie brute est:
ActiveRecord::Relation:0x10355d1c0
Que devrais-je faire?
ruby-on-rails
ruby
cjm2671
la source
la source
Réponses:
J'essaie généralement d'abord
.inspect
, si cela ne me donne pas ce que je veux, je vais passer à.to_yaml
.J'espère que cela pourra aider.
la source
y record_name.attributes
.#y
est un alias pourto_yaml
.définissez la méthode to_s dans votre modèle. Par exemple
Ensuite, lorsque vous allez l'imprimer avec #puts, il affichera cette chaîne avec ces variables.
la source
puts my_model_instance
n'appelle pasto_s
. Vous devrez le faire explicitement:puts my_model_instance.to_s
Dans Rails, vous pouvez imprimer le résultat dans la vue en utilisant le débogage 'Helper ActionView :: Helpers :: DebugHelper
résultats (dans le navigateur)
la source
J'utilise la gemme awesome_print
Il vous suffit donc de taper:
la source
.inspect
est ce que vous recherchez, c'est beaucoup plus facile IMO que.to_yaml
!la source
inspect
c'est génial mais parfois pas assez. Par exemple ,BigDecimal
imprime comme ceci:#<BigDecimal:7ff49f5478b0,'0.1E2',9(18)>
.Pour avoir un contrôle total sur ce qui est imprimé, vous pouvez redéfinir
to_s
ou desinspect
méthodes. Ou créez le vôtre pour ne pas trop confondre les futurs développeurs.Cela appliquera une méthode (c'est
to_s
-à- dire ) à tous les attributs. Cet exemple permettra de se débarrasser du laidBigDecimals
.Vous pouvez également redéfinir une poignée d'attributs uniquement:
Vous pouvez également créer un mélange des deux ou en quelque sorte ajouter des associations.
la source
pp fait le travail aussi, aucune gemme n'est requise.
Vous pouvez également imprimer deux instances d'un objet:
la source
Vous devez utiliser
debug(@var)
. C'est exactement comme "print_r".la source