найти условие проблемы - PullRequest
       5

найти условие проблемы

1 голос
/ 13 февраля 2010

min_age = params [: min_age]

max_age = params [: max_age]

@ users = User.find (: все, : условие => ["годы> =? И годы <=?", min_age, max_age]) </p>

Это метод контроллера для функции поиска. Как видите, я хочу искать по возрасту. Это работает для всех значений max_age до 99, но когда max_age превышает 99, поиск не возвращает результатов, когда это необходимо. Я действительно не ожидаю многих людей за 99, но мне любопытно, почему это происходит. Возраст - это строка.

Ответы [ 2 ]

3 голосов
/ 13 февраля 2010

Это потому, что «100» стоит перед «20», когда вы сравниваете в алфавитно-цифровом порядке , как это делают строки. Измените age на целое число, как и должно быть, и оно будет работать нормально.

2 голосов
/ 13 февраля 2010

Марк Байерс имеет правильный ответ. Так что это должно быть принято.

Но вы должны знать, что вы должны использовать с именем scope для.

In 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...