Rails: rejoindre avec plusieurs conditions

J'ai un modèle simple comme

class Interest < ActiveRecord::Base
  has_and_belongs_to_many :user_profiles
end

class UserProfile < ActiveRecord::Base
  has_and_belongs_to_many :interests
end

Quand je veux l'interroger tous les utilisateurs avec des intérêts particuliers, c'est assez simple à faire

UserProfile.joins(:interests).where('interests.id = ?', an_interest)

Mais comment puis-je regarder pour les utilisateurs qui ont des intérêts multiples? Bien sûr, si je ne

UserProfile.joins(:interests).where('interests.id = ?', an_interest).where('interests.id = ?', another_interest)

Je reçois toujours un résultat vide, puisque, après les joindre, pas de ligne peut avoir simultanément intérêt.id = an_interest et de l'intérêt.id = another_interest.

Est-il un moyen de ActiveRecord pour exprimer "je veux la liste des utilisateurs qui ont 2 (spécifié) intérêts associés?

mise à jour (solution) c'est la première version de travail, je suis venu, bravo à Omar Qureshi

    specified_interests.each_with_index do |i, idx|
      main_join_clause = "interests_#{idx}.user_profile_id = user_profiles.id"
      join_clause = sanitize_sql_array ["inner join interests_user_profiles interests_#{idx} on
                    (#{main_join_clause} and interests_#{idx}.interest_id = ?)", i]

      relation = relation.joins(join_clause)
    end

OriginalL'auteur Filippo Diotalevi | 2011-03-21