【发布时间】:2011-11-05 06:34:42
【问题描述】:
所以我正在构建一个匹配用户的应用程序。用户模型有 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
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 activerecord scope