Active Record находят, используя условия, между двумя числами - PullRequest
0 голосов
/ 02 ноября 2011

Я перепробовал все комбинации находок, которые только мог придумать, и не добился 100% успеха. Какой предпочтительный (или любой другой способ, который работает) делает эту находку:

При использовании where, я получаю невозможность перебрать ошибку float.

Question.where('id not in (?) AND rating.id = ? AND pvalue BETWEEN ?', not_in, rating_id, 0.0..100.0).limit(25)

При использовании хэша условий я не могу понять, как ограничить результаты массивом. Итак, я попробовал два условия, но я не думаю, что id 'не в (?) Части когда-либо превращается в sql ... он возвращает результаты, которые находятся в массиве not_in.

Question.find_all_by_rating_id(rating_id, :limit=>25, :conditions => ['id not in (?)', not_in], :conditions=>{:pvalue => 0.0..100.0})

Вышеприведенное условие пропускает первое условие (оно все равно выглядит неправильно с двумя там ...) и возвращает

SELECT "questions".* FROM "questions" WHERE "questions"."rating_id" = 458 AND ("questions"."pvalue" BETWEEN 0.0 AND 100.0) LIMIT 25

Так что мне нужно сочетание условия хеширования и идентификатора, не находящегося в состоянии. Любая помощь приветствуется!

примечания: pvalue - это число с плавающей запятой, not_in - массив идентификаторов, которые я не хочу, чтобы запрос возвращал.

1 Ответ

0 голосов
/ 02 ноября 2011

Попробуйте

Question.where("id not in (?) AND rating.id = ? AND pvalue BETWEEN ? AND ?", 
  not_in, 
  rating_id, 
  0.0, 100.0
).limit(25)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...