В моем приложении на Rails есть модель Cycle с атрибутом start, который является датой. Я сталкиваюсь с очень странной проблемой, когда иногда Cycle.find_by_start
возвращает ожидаемую запись, а в других случаях возвращается nil
.
Например, Cycle.find_by_start("2011-05-01")
возвращает следующее:
=> #<Cycle id: 45, created_at: "2011-05-15 22:38:35",
updated_at: "2011-05-15 22:38:35", user_id: 20,
start: "2011-05-01", ending: nil, startguess: false, endingguess: nil>
Но выполнение Cycle.find_by_start("2011-05-13")
возвращает nil
, хотя существует запись с совпадающим значением start
. Я проверил, что запись существует, и начальное значение совпадает, выполнив следующую команду в консоли Rails.
irb(main):012:0> Cycle.find(47)
=> #<Cycle id: 47, created_at: "2011-05-23 01:28:59",
updated_at: "2011-06-21 00:38:34", user_id: 12,
start: "2011-05-13", ending: "2011-05-31", startguess: false, endingguess: false>
irb(main):011:0> Cycle.find(47).start == "2011-05-13".to_date
=> true
Возможно, актуальная информация: Запуск Rails 3.0.7 в режиме разработки с базой данных SQLite.
Есть идеи или советы по устранению неполадок?
Редактировать 1
Журнал используемых запросов SQL:
[94m19:10:11 active_record [37mCycle Load (1.0ms) SELECT "cycles".* FROM "cycles" WHERE "cycles"."start" = '2011-05-01' LIMIT 1
[94m19:10:19 active_record [37mCycle Load (0.0ms) SELECT "cycles".* FROM "cycles" WHERE "cycles"."start" = '2011-05-13' LIMIT 1