2010-02-13 50 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)