Область применения Rails с Arel, NOW () возвращает мне значение NULL после миграции - PullRequest
0 голосов
/ 21 апреля 2020

Я перенес свое приложение в Rails 6.0

У меня есть эта область действия

  scope :published,      -> { where(state: 'published').where arel_table[:published_at].lteq 'NOW()' }

Это запрос, сгенерированный activerecord для Content.published

SELECT "contents".* FROM "contents" WHERE "contents"."state" = $1 AND "contents"."published_at" <= NULL ORDER BY "contents"."published_at" DESC  [["state", "published"]]
=> []

Почему NOW() это NULL ??

1 Ответ

0 голосов
/ 21 апреля 2020

Перепишите этот запрос, чтобы использовать литеральную строку для условия WHERE:

scope :published, -> { where(state: 'published').where('published_at <= NOW()');

Хотя при разработке приложений такого типа чаще всего оставить дату как NULL для неопубликованных книг, а затем найти записи, которые публикуются путем запроса таким образом:

scope :published, -> { where(state: 'published').where('published_at IS NOT NULL');

(Возможно, ваша уже разработана таким образом?)

Надеюсь, это поможет! :)

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