J'ai un AudioFile qui a beaucoup de photos. Une photo a un attribut "primaire" (0 ou 1 dans db) Qu'est-ce qu'une façon idiomatique ruby de faire quelque chose comme ceci: Je veux avoir une méthode sur l'AudioFile qui retourne l'ID de la photo primaire, c'est à dire la photo l'attribut principal a la valeur true.itérer sur une collection et renvoyer l'élément correspondant
1
A
Répondre
1
Généralement, la meilleure pratique consiste à configurer un named_scope
dans votre modèle Photo
.
class Photo < ActiveRecord::Base
named_scope :primary, :conditions => {:primary => true}
end
Ensuite, vous pouvez appeler la portée principale sur vos assocations de photos. par exemple.
@audio_file.photos.primary.first
Vous pouvez également l'inclure dans une méthode auxiliaire.
def primary_photo
photos.primary.first
end
Voir http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html pour plus de détails et d'exemples ou google named_scope.
1
Je ne sais pas si c'est ce que vous voulez dire, mais Enumerable#Select vous donnera tous les éléments d'un objet énumérable correspondant à un cas (donné dans un bloc).
Questions connexes
- 1. Méthode générique pour renvoyer une collection entière
- 2. Pouvez-vous itérer sur la collection XmlAttributeOverrides en C#
- 3. Itérer sur un tableau et renvoyer le suivant et l'élément avant le courant
- 4. Itérer sur une plage d'itératives
- 5. Comment itérer une collection <Set <IConnection>>
- 6. Itérer Collection Doctrine commandé par un champ
- 7. Itérer via un IList
- 8. Itérer sur une carte et une matrice simultanément dans une boucle for
- 9. Itérer sur les fonctions vectorielles et appelantes
- 10. Itérer sur une matrice et combiner deux matrices
- 11. Itérer à travers les éléments de la collection et vérifier chaque propriété pour une valeur valide
- 12. TinyXML Itérer sur une sous-arborescence
- 13. Comment itérer sur une séquence boost :: fusion?
- 14. itérer sur une colonne d'entité LINQ
- 15. Itérer sur une dimension arbitraire en numpy
- 16. Itérer sur les couleurs
- 17. Itérer sur enum?
- 18. sqlalchemy - regroupant des articles et itérer sur les sous-listes
- 19. Java int [] [] array - itérer et trouver une valeur
- 20. Itérer sur les propriétés de classe
- 21. Dynamic LINQ sur une collection?
- 22. problème itérer sur une série chronologique en clojure
- 23. LINQ IMultipleResults - itérer sur les résultats
- 24. (C#) itérer sur un membre de collection privée en lecture seule
- 25. Utilisation de Except() sur une collection générique
- 26. ant itérer sur les fichiers
- 27. IE et string correspondant
- 28. Comment itérer une collection de colonnes Excel en C++ en utilisant Automation?
- 29. Itérer sur les dictionnaires VBA?
- 30. Évitez d'avoir une énorme collection d'identifiants en appelant un DAO.getAll()
donc je peux écrire def primary_photo self.photos.select {| element | element.primary = 'true'} fin – rordude