找到条件问题

时间:2010-02-13 00:27:00

标签: ruby-on-rails

min_age = params [:min_age]

max_age = params [:max_age]

@users = User.find(:all,                       :conditions => [“年> =?AND年< =?”,min_age,max_age])

这是搜索功能的控制器方法。如您所见,我希望按年龄范围搜索。这适用于最大99的所有max_age值,但是当max_age超过99时,搜索不会返回结果。我真的不期待99以上的人,但我很好奇为什么会这样。年龄是一个字符串。

2 个答案:

答案 0 :(得分:3)

这是因为当你将字母数字作为字符串进行比较时,“100”会出现在“20”之前。将age更改为应该是的整数,它将正常工作。

答案 1 :(得分:2)

Mark Byers有正确的答案。所以它应该被接受。

但是你应该知道,这是你应该使用named scope的那种东西。

在user.rb

named_scope :ages_in_range, lambda {|min, max|
  {:conditions => ["years >= ? AND years <= ?", min, max]}
}

现在在您的控制器中:

@users = User.ages_in_range(min_age,max_age)