Я пытаюсь совместить инструкцию uniq
с оператором select("distinct")
в Active Record, и это приводит к двум ключевым словам DISTINCT
, что, конечно же, приводит к неверному запросу. Это самый простой пример, который я придумал. (Марк, который упрощен для того, чтобы помочь вам понять проблему - я не просто просить, как я получаю из различных идентификаторов из базы данных.)Как объединить uniq с select ("distinct") без получения недопустимого запроса?
Product.all.uniq.select("distinct id").map(&:id)
This gives me this error message:
Product Load (0.7ms) SELECT DISTINCT distinct id FROM "products"
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near "distinct"
LINE 1: SELECT DISTINCT distinct id FROM "products"
^
: SELECT DISTINCT distinct id FROM "products"
Почему я получаю два DISTRINCT
ключевые слова здесь? Есть ли способ избежать этого? Использование uniq
дважды работает, но мне нужно сделать выбор для одного из фильтров, которые я реализую.
Редактировать: select("distinct..")
должно быть выполнено перед заявлением uniq
.
Я считаю, что это то, что вы ищете: http://stackoverflow.com/questions/9658881/rails-select-unique-values-from-a-column – akz92
Нет, I1m нет. В этом вопросе спрашивается, почему модели с одним полем не равны. Я хочу знать, почему я получаю недопустимый запрос от объединения простого 'uniq' с' select ("distinct ...") 'и как я могу его исправить. – karianneberg