Rails MySql: пустой результат в режиме разработки - PullRequest
2 голосов
/ 15 марта 2012

Я получил этот вызов в моем контроллере:

@tournaments = Tournament.unignored.all(
:include => [:matches,:sport,:category],
:conditions=> ["matches.status in (0,4) 
               && matches.date < ?",
               Time.now.end_of_week + 1.day],
:order => "sports.sort ASC, categories.sort ASC, tournaments.sort ASC")

Все работает как в рабочем режиме, так и в консоли разработки.Но когда я пытаюсь перейти на эту страницу в режиме разработки, я получаю:

Ошибка при оценке nil.each

Когда я вставляю созданный SQL Запрос в MySQL Браузеррезультаты есть.

It refers to mysql2 (0.2.11) lib/active_record/connection_adapters/mysql2_adapter.rb:587:in `select'

В этом запросе поступает правильно.

У кого-нибудь были подобные проблемы?Эта ошибка появилась из ниоткуда.Нет обновлений и т.д ...

Спасибо!

Rails 3.0.9 MySql 5.5 Ruby 1.8.7 and mysql2 0.2.11 gem

1 Ответ

0 голосов
/ 11 апреля 2012

Похоже, вам нужно использовать :joins вместо :include.

опция :include для allfind и where и т. Д.) Сообщает рельсам отдельно делает запрос для загрузки всех необходимых данных для заданных связанных записей.

Опция :join получает рельсы для выполнения SQL-запроса, который СОЕДИНЯЕТ связанные модели, чтобы вы могли запрашиватьих поля.

Если вы хотите сделать запрос к полям и предварительно загрузить их в ассоциации, вам нужно сделать оба:

@tournaments = Tournament.unignored.all(
:include => [:matches,:sport,:category],
:joins => [:matches,:sport,:category],
:conditions=> ["matches.status in (0,4) 
               && matches.date < ?",
               Time.now.end_of_week + 1.day],
:order => "sports.sort ASC, categories.sort ASC, tournaments.sort ASC")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...