2010-02-13 74 views
1

MIN_AGE =参数[:MIN_AGE]查找条件问题

MAX_AGE =参数[:MAX_AGE]

@users = User.find(:所有, :条件=> [”岁月> = AND年< =?“,min_age,max_age])

这是用于搜索功能的控制器方法。正如你所看到的,我希望按年龄范围进行搜索。这适用于所有max_age值高达99,但是当max_age超过99时,搜索将不会返回任何结果。我并没有真正期待99岁以上的人,但我很好奇为什么会这样。年龄是一个字符串。

+0

它在DB模式或者Ruby代码字符串(VARCHAR)? – user94154 2010-02-13 00:29:49

回答

3

这是因为“100”出现在“20”之前时,您按字母顺序比较字母数字。更改age为一个整数,它应该是,它会正常工作。

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)