sql - ¿Cómo busco entre un rango de fechas, usando el modelo ActiveRecord?
ruby-on-rails ruby (1)
Creo que puedes pasar un objeto Range al descubrimiento de ActiveRecord y obtener lo que deseas:
ReportsThirdParty.find(:all,
:conditions => {
:site_id => site_id,
:campaign_id => campaign_id,
:size_id => size_id,
:row_date => start_date..end_date } )
Editar: Si está usando Rails 3, puede esperar usar algo similar a:
ReportsThirdParty.where(
:site_id => site_id,
:campaign_id => campaign_id,
:size_id => size_id,
:row_date => start_date..end_date)
Para obtener más información sobre las consultas de registro activo de Rails 3, visite:
http://railscasts.com/episodes/202-active-record-queries-in-rails-3
Soy nuevo tanto para Ruby como para ActiveRecord. Actualmente tengo la necesidad de modificar un fragmento de código existente para agregar un rango de fechas en la selección. La pieza actual es así:
ReportsThirdparty.find(:all, :conditions => {:site_id=>site_id, :campaign_id=>campaign_id, :size_id=>size_id})
Ahora, necesito agregar un rango, pero no estoy seguro de cómo hacer los operadores BETWEEN
o >=
o <=
. Supongo que lo que necesito es algo similar a:
ReportsThirdparty.find(:all, :conditions => {:site_id=>site_id, :campaign_id=>campaign_id, :size_id=>size_id, :row_date=>"BETWEEN #{start_date} AND #{end_date}")
Incluso si esto funcionara, sé que usar la interpolación aquí me dejaría sujeto a ataques de inyección de SQL.