Переменная экземпляра Rails выдает SQL-код вместо длины - PullRequest
0 голосов
/ 10 января 2012

У меня тут странный случай, и это происходит только в режиме разработки.Эта строка (в контроллере):

@searches.length

Выдает эту ошибку:

NoMethodError: неопределенный метод fields' for nil:NilClass: SELECT searches.*, COUNT(searchTerm) AS timesSearched FROM выполняет поиск WHERE (results = 0 AND searchDate> DATE_SUB (CURDATE(), ИНТЕРВАЛ 7 ДНЯ)) GROUP BY searchTerm ORDER BY timesSearched DESC, searchDate DESC

Этот SQL - запрос, который вызывается и затем назначается этой переменной экземпляра.Это не происходит в производственном режиме, и это не случалось раньше.

Я думаю, что это должно быть что-то с моей средой разработки, но не могу придумать, что это может быть.

Любая помощь будет принята с благодарностью.

Ruby 1.8.7 и Rails 3.1.1

Редактировать: публикация содержимого файла среды разработки

  config.cache_classes = false
  config.whiny_nils = true
  config.encoding = "utf-8"
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false
  config.action_mailer.raise_delivery_errors = false
  config.active_support.deprecation = :log
  config.action_dispatch.best_standards_support = :builtin
  config.assets.compress = false
  config.assets.debug = false
  config.assets.precompile += %w( *.css )

Ответы [ 2 ]

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

Я смог исправить ошибку, установив RVM и обновившись до Ruby 1.9.3. Должно быть что-то в версии 1.8.7, которая поставляется с OS X, которая вызывает эти проблемы, потому что я начал получать их для других запросов.

Раньше я использовал 1.9.2, но мне пришлось понизить версию, потому что мой хостинг по-прежнему использует 1.8.7.

Я ценю вашу помощь, это были действительно хорошие идеи, большое спасибо.

0 голосов
/ 10 января 2012

Возможно ли, что база данных, которую вы настроили в процессе разработки, не имеет таблицы / полей, необходимых для поиска (следовательно, пытается .length на NULL).Это может быть что-то такое же маленькое, как поле с измененным разрешающим флагом null.

Также изменились ли какие-либо разрешения для вашей базы данных разработки (изменение пароля, разрешенные хосты и т. Д.)?

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

Также сравните ваши файлы конфигурации производства и разработки.

Если у вас есть дополнительная информация здесь, и мы посмотрим, сможем ли мы помочь:)

Дейв

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