En supposant que j'ai un modèle de commentaires et un modèle de messages,premier enregistrement dans des rails
Quel code puis-je utiliser en vue d'afficher le premier commentaire du poste étant lié?
En supposant que j'ai un modèle de commentaires et un modèle de messages,premier enregistrement dans des rails
Quel code puis-je utiliser en vue d'afficher le premier commentaire du poste étant lié?
supposant:
post = Post.find(params[:id])
et modèle post contient:
has_many :comments
vous pouvez:
comments = post.comments
first_comment = comments.first
Post.find(123).comments.first
Où 123 est votre ID de poste.
urgh qui semble grossier –
trouver est par défaut par ID, et trouver (: d'abord) (avant votre édition) par rapport à .first est méchant –
Merci, nettoyé. – aehlke
@ post.comments.first fonctionne normalement. (@post devrait être mis en place dans votre méthode de contrôleur)
Cependant, il est bon de réaliser que «premier» signifie d'abord dans l'association, qui est normalement ordonnée par id. Depuis l'auto-incrémentation des identifiants, il s'agit de la même chose que le "premier ajout" ou le "premier commentaire". Mais ça ne doit pas être.
Si votre association pour les commentaires a spécifié une commande différente, utilisez d'abord celle-ci, par ex. si votre association ressemblait à ceci:
has_many :comments, :order=>'rating desc'
Ensuite (en supposant que le champ « note » est mis en place en quelque sorte d'être une valeur qui représente la note moyenne) post.comments.first vous donnera le commentaire les mieux notés, non le premier à être ajouté.
Dans ce cas, en supposant que votre modèle de commentaires a horodatages, alors vous auriez besoin de faire quelque chose comme
@post.comments.find(:first, :order=>'created_at asc')
C'est beaucoup d'affectation de variables inutiles pour une telle tâche simple. – aehlke
Juste pour illustrer le processus –
Awesome perfect! – Elliot