Перепишите этот запрос, чтобы использовать литеральную строку для условия WHERE:
scope :published, -> { where(state: 'published').where('published_at <= NOW()');
Хотя при разработке приложений такого типа чаще всего оставить дату как NULL для неопубликованных книг, а затем найти записи, которые публикуются путем запроса таким образом:
scope :published, -> { where(state: 'published').where('published_at IS NOT NULL');
(Возможно, ваша уже разработана таким образом?)
Надеюсь, это поможет! :)