Так как в Google это происходит первым, я решил присоединиться. Вероятно, в этом случае лучше положиться на Арела.
expires = Announcement.arel_table[:expires]
@announcements = Announcement.where(:publish => true)
.where(expires.lt(Date.today))
Это создаст следующий SQL-запрос
-- Using Arel
SELECT "announcements".* FROM "announcements"
WHERE "announcements"."publish" = 't'
AND ("announcements"."expires" < '2016-02-03 18:41:26.454325')
-- Contrast that with the string binding method mentioned above
SELECT "announcements".* FROM "announcements"
WHERE (publish = 't' AND expires < '2016-02-03 18:41:26.454325')
Имена столбцов полностью определены, поэтому вы избежите конфликтов при составлении других запросов поверх этого ActiveRecord :: Relation, т.е. @announcements