Rails обнаруживает, что не возвращает запись, которая существует в базе данных - PullRequest
1 голос
/ 09 августа 2011

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

Что я делаю, так это запускаю поиск идентификатора модели. Когда я запускаю его для определенного набора записей, они возвращают эту запись, как и ожидалось. Но есть еще около 100 записей, которые я могу видеть в базе данных (mysql), но выполнение команды find возвращает исключение ActiveRecord :: RecordNotFound.

Если я создаю другую запись непосредственно в базе данных, я не могу также извлечь эту запись. Однако, если я сделаю новую команду в консоли rails, эта запись будет восстановлена. Если я выполню команду find_by_sql, записи будут извлечены.

Я пытался оптимизировать таблицу, но кроме этого, я немного озадачен тем, что может быть причиной этого. Я использую Rails 2.3.12 с Ruby 1.8.7 и гемом mysql на моей локальной машине. Любые мысли о возможных причинах будут с благодарностью. Спасибо!

Редактировать Спасибо за указатели - прикрепил регистратор к моему экземпляру консоли, который выявил проблему - забытый default_scope, который ограничивал возвращаемое.

1 Ответ

0 голосов
/ 09 августа 2011

В вашей модели должно быть что-то, что ограничивает объем ваших запросов SQL.

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

...