8
votes

Dans RubyonRails, comment obtenir la classe modèle associée de et ActiveRecord :: objet de relation?

Supposons que j'ai un modèle: xxx

puis comment puis-je obtenir le nom de la classe modèle via la variable 'messages', peut-être une méthode appelée modèle_class_name:
met les postes.Model_class_name # => POST

MERCI :)


0 commentaires

3 Réponses :


1
votes

La réponse la plus simple et la plus directe à votre question est la suivante: xxx

équivalente à l'écriture: xxx

Vous pouvez le faire Parce que votre requête reviendra un résultat énumérable. (ActiveRecord :: La relation implémente l'interface énumérable de Ruby).

- Scott


2 commentaires

Hey Croplio, 4 mois ont passé. Cette réponse a-t-elle résolu votre problème?


Si message ne renvoie pas de lignes, alors post.first sera nul et cela ne fonctionnera pas.



15
votes

L'attribut #klass de activeRecord :: relation retourne la classe modèle sur lequel la relation a été construite: xxx

pour obtenir le nom de la classe: xxx

Ceci est connu pour fonctionner avec ces versions:

  • testé à l'origine à Activerecord 4.2.4.
  • travaille dans Rails 5.2 (@Raphael Souza)

0 commentaires

5
votes

Pour une solution qui fonctionne, même s'il n'y a pas d'éléments connexes:

class Post < ActiveRecord::Base
   has_many :comments
end

Post.reflect_on_association(:comments).klass
=> Comment


0 commentaires