ruby-on-rails - one - ruby rails active record
Cómo especificar una condición menor que la actual en una fecha en el registro activo de rieles (2)
Dado que esto aparece primero en google, pensé que entraría. Probablemente sea mejor confiar en Arel en esta circunstancia.
expires = Announcement.arel_table[:expires]
@announcements = Announcement.where(:publish => true)
.where(expires.lt(Date.today))
Eso construirá la siguiente consulta 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'')
Los nombres de las columnas están totalmente calificados, por lo que evitará conflictos al redactar otras consultas sobre este ActiveRecord :: Relation ie @announcements
Estoy tratando de encontrar la forma de extraer todos los registros en mi conjunto, donde sus campos "publicar" son verdaderos y "caducan" es menor que hoy. Tengo lo siguiente, pero no creo que funcione menos de la pieza, ¿puede alguien indicarme el camino correcto?
@announcements = Announcement.where(:publish => true, :expires < Date.today)
Gracias de antemano por tu ayuda
Prueba esto:
@announcements = Announcement.where("publish = ? AND expires < ?", true, Date.today)