ActiveRecord select (). Where () возвращает SQL, который начинается с SELECT COUNT - я не хочу COUNT - PullRequest
3 голосов
/ 30 октября 2019

У меня есть простой оператор select (). Where () в rails, который возвращает SQL, начинающийся с «SELECT COUNT (...»), и я не знаю, откуда исходит COUNT, и не хочуэто.

Я много гуглил, но так как COUNT - такой распространенный термин, я не смог найти подходящих ответов.

Это код, который это делает:

@properties = Property.select("property.*").where("(address1 LIKE '%528 Alameda%')")

Вот что я получил (скопировано из сообщения об ошибке на веб-странице):

SELECT COUNT(property.*) FROM `property` WHERE ((address1 LIKE '%528 Alameda%'))

Вот чтоЯ ожидал:

SELECT property.* FROM `property` WHERE ((address1 LIKE '%528 Alameda%'))

Почему добавляется COUNT () и как от него избавиться? Спасибо!

EDIT

Оказывается, я искал не в том месте. Он не имел ничего общего с этим кодом:

@properties = Property.select("property.*").where("(address1 LIKE '%528 Alameda%')")

Скорее позже в коде я позвонил @properties.count, который генерировал SQL

SELECT COUNT(property.*) FROM `property` WHERE ((address1 LIKE '%528 Alameda%'))

Который был сбой. Вопрос: что не так с этим SQL?

Ответы [ 3 ]

0 голосов
/ 31 октября 2019

COUNT может принимать только 1 имя столбца в качестве параметра. Таким образом, вы можете сделать COUNT (идентификатор), но вы не можете сделать COUNT (свойство. *) Или COUNT (идентификатор, строитель) и т. Д.

Решение состоит в том, чтобы написать @properties.count(:id)

0 голосов
/ 31 октября 2019
@properties = Property.select("property.*").where("(address1 LIKE '%528 Alameda%')")

Это правильный ответ только до тех пор, пока вы не используете нумерацию страниц любого вида.

0 голосов
/ 30 октября 2019

Property.where("address1 LIKE ?", "528 Alameda")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...