Disons que j'ai des modèles: Utilisateur et Objet et relation plusieurs-à-plusieurs entre eux. Comment obtenir des utilisateurs qui ont exactement (pas plus) d'éléments avec les attributs définis, c'est-à-dire les utilisateurs qui ont des éléments avec des couleurs = ['rouge', 'noir'].Inversé has_many dans Rails
Bien sûr, je peux faire quelque chose comme ceci:
User.all :joins => [:items, :items], :conditions => {:"items.color" => "red", :"items_users.color" => 'black'}
Mais pour d'autres attributs, il va être assez lourd. Je peux le faire aussi:
User.all(:conditions => ["items.color in (?), ['red', 'black']], :include => :items)
Mais celui-ci renvoie également aux utilisateurs avec des éléments ayant des couleurs = [ « rouge », « noir », « bleu », « etc »]
La seule solution est obtenir tout et trier avec la syntaxe ruby? Comment le faire dans une requête SQL ou une syntaxe Rails AR?
Bien que simple, cela brise les conventions de rails, et empêche le chargement paresseux dans les chaînes (en supposant que cela entrerait dans un 'lambda' –