почему это возвращает ноль - PullRequest
0 голосов
/ 24 марта 2011

У меня есть этот запрос, который принадлежит местоположению

>> r = Request.find 11210  
=> #<Request id: 11210, artist: "Coldplay", song: "Amsterdam", venue: "someplace", showdate: "2011-02-23", amount: nil, user_id: 11, created_at: "2011-02-23 02:55:13", updated_at: "2011-03-24 02:55:13", like_reason: "Its Great", pledge: #<BigDecimal:1032f1850,'0.29E2',9(18)>, location_id: 243, charge_card: false, approval_key: nil, charged: false, paypal_email: "coldpl_1300920081_per@gmail.com">
>> r.location.showdate
=> Wed, 23 Feb 2011
>> r.showdate
=> Wed, 23 Feb 2011
>> Request.find_all_by_showdate(r.location.showdate)
=> []
>> 

они оба поля даты в БД ...

В настоящее время я использую sqlite, если это имеет значение

Ответы [ 2 ]

0 голосов
/ 24 марта 2011

Если вы посмотрите на «необработанный» вывод Request.find 11210, вы увидите следующее:

showdate: "2011-02-23"

Конечно, это не r.location.showdate, но оно должно дать вам подсказку.Попробуйте вместо этого:

Request.find_all_by_showdate('2011-02-23')

Если это работает, то у вас просто проблема с форматированием.

Имейте в виду, что SQLite хранит все как строку внутри, он принимаетобычные типы данных в определениях столбцов, но все это внутренняя строка;Итак, где-то вдоль строки драйвер SQLite скажет:

r.location.showdate.to_s

и получит

'Wed, 23 Feb 2011'

Затем он будет искать эту строку в столбце showdate, но этоне найдет его, потому что showdate содержит даты в формате ISO-8601 .

0 голосов
/ 24 марта 2011

При работе с датами / датами я обычно делаю .to_s(:db), чтобы отформатировать дату так, чтобы она хорошо воспроизводилась в запросах.Я не уверен, что это источник вашей проблемы, но я бы начал с этого.

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