Complex Scope, Rails 3

Итак, я создаю приложение, которое соответствует пользователям. Пользовательские модели имеют 3 атрибута (это в любом случае имеет отношение к моему вопросу: пол: строка , 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
5
задан goddamnyouryan 27 August 2011 в 22:16
поделиться