Je construis donc une application qui correspond aux utilisateurs. modèles d'utilisateurs ont 3 attributs (qui sont pertinents à ma question de toute façon. gender:string
, looking_for_men:boolean
, looking_for_women:boolean
Complex Scope, Rails 3
actuellement j'ai une méthode dans mon modèle comme ceci:
def browse
if self.looking_for_men == true && self.looking_for_women == true
if self.sex == "Male"
User.where("looking_for_men = ?", true)
elsif self.sex == "Female"
User.where("looking_for_women = ?", true)
end
elsif self.sex == "Male" && self.looking_for_men == true
User.where("looking_for_men = ? AND sex = ?", true, "Male")
elsif self.sex == "Female" && self.looking_for_women == true
User.where("looking_for_women = ? AND sex = ?", true, "Female")
else
if self.sex == "Male"
User.where("looking_for_men = ? AND sex = ?", true, "Female")
elsif self.sex == "Female"
User.where("looking_for_women = ? AND sex = ?", true, "Male")
end
end
end
C'est assez désordonné, comme Est-ce qu'il y a de toute façon à nettoyer ça et à en faire un scope, alors disons par exemple que je suis un utilisateur masculin, et je cherche des femmes qui ne renvoie que des femmes qui cherchent des hommes quand je fais une requête comme ceci:
@users = User.all.browse
J'aime ça. Je renommerais les étendues 'looking_for_men' et' looking_for_women' juste pour la lisibilité (heurtant les booléens); mais ce n'est pas vraiment nécessaire. – nathanvda