所以我正在构建一个匹配用户的应用程序。用户模型有3个属性(即有关我的问题反正:gender:string
,looking_for_men:boolean
,looking_for_women:boolean
复杂的范围,Rails 3
目前我有一个方法,在我的模型,像这样:
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
我喜欢这个。为了可读性,我会重命名范围'looking_for_men'和'looking_for_women'(与布尔值相冲突);但那不是真的需要。 – nathanvda