Итак, я создаю приложение, соответствующее пользователям. Пользовательские модели имеют 3 атрибута (которые относятся к моему вопросу в любом случае: gender:string
, looking_for_men:boolean
, looking_for_women:boolean
.
В настоящее время у меня есть метод в моей модели:
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
Это довольно грязно, как вы можете сказать. Есть ли какой-нибудь способ очистить это и превратить в область действия, скажем, например, что я пользователь мужского пола, и я ищу женщин, которые возвращают только женщин, которые ищут мужчин, когда я делаю запрос следующим образом:
@users = User.all.browse