проблема с ActiveRecord / Rails упорядочение данных запроса из MySQL - нет проблем в SQLite - PullRequest
0 голосов
/ 09 февраля 2011

У меня есть два следующих запроса ActiveRecord в файле application_helper.rb:

@ left_menu = Page.select ('id, menu_name'). Where (: опубликовано => true,: left_menu => true) .order ("sort")

Также может быть записано как:

@ left_menu = Page.select ('id, menu_name'). where (: опубликовано => true,: left_menu=> true) .order ("'sort' ASC")

и:

@ left_menu = Page.find (: все,: условия => {: опубликовано => true,:left_menu => true},: order =>: sort)

Почему первый не сортирует столбец sort, а второй нет?Оба работают в SQLite, но в MySQL работает только второй.

Есть идеи?

1 Ответ

1 голос
/ 09 февраля 2011

это кавычка в других параметрах заказа.
сгенерированный запрос будет (похож на)

"SELECT id, title FROM `pages` WHERE (`pages`.`pub` = 1) ORDER BY 'sort' ASC"

это кавычка char '.Это неправильный синтаксис sql, он будет упорядочен по стоимости, а не по столбцу.sqlite разрешить, mysql нет.
попробуйте просто использовать

Page.select('id, menu_name').where(:published => true, :left_menu => true).order("sort ASC")

без одинарных кавычек в параметрах метода цепочки заказов.

извините за мой английский.хорошего дня

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