J'ai 2 modèles avec plusieurs-à-plusieurs (simplifié ici avec l'exemple des livres-auteurs):Ruby on Rails: trouver ne récupère pas tous les objets associés lors de l'utilisation des conditions
class Book < ActiveRecord::Base
has_and_belongs_to_many :authors
end
class Author < ActiveRecord::Base
has_and_belongs_to_many :books
end
Je dois afficher une liste de livres, et sous chacun une liste de ses auteurs. Les utilisateurs peuvent filtrer via un certain auteur.
J'essaie de filtrer via un auteur de la façon suivante:
Supposons qu'il n'y ait qu'un seul livre résultant, et il a 3 auteurs.
books = Book.find(:all, :include => :authors, :conditions => "authors.id = 5")
Lorsque je tente de lister les différents auteurs des livres récupérés, je reçois seulement l'auteur avec ID = 5.
books.first.authors.size # => 1
books.first.authors.first.id # => 5
j'attendre rails pour aller récupérer tous les différents auteurs associés aux livres, que ce soit lors de la requête recherche ou comme une requête de suivi, mais il ne fonctionne pas.
Comment puis-je résoudre ce problème? Y at-il un problème avec les associations? la requête de recherche?
Merci.
Merci, j'ai pensé à cette solution, mais j'espérais qu'il existe une solution plus simple. En ce qui concerne les jointures: quand j'utilise des jointures dans cet exemple, j'obtiens un tableau de 3 livres qui sont le même livre, chacun ayant un auteur différent, donc ça ne résout pas le problème ... – Nadav
Okay, quand tu dis ça Par exemple, je suppose que vous voulez dire quand vous changez simplement: inclure à: joint dans votre exemple décrit. Parce que j'ai vérifié le code que j'ai fourni en dernier et ça a marché pour moi. – DanneManne
Oui, votre code fonctionne, mais je ne veux pas le casser dans le code à 2 requêtes différentes. N'existe-t-il pas un moyen d'exécuter une seule requête de rails sans aller chercher manuellement les identifiants, puis extraire les objets eux-mêmes? – Nadav