Как я ищу между диапазоном дат, Используя модель ActiveRecord?

Я плохо знаком с Ruby и для ActiveRecord. У меня в настоящее время есть потребность изменить и существующая часть кода для добавления диапазона дат в выборе. Текущая часть идет как это:

ReportsThirdparty.find(:all, :conditions => {:site_id=>site_id, :campaign_id=>campaign_id, :size_id=>size_id})

Теперь, я должен добавить диапазон, но я не уверен, как сделать BETWEEN или >= или <= операторы. Я предполагаю то, в чем я нуждаюсь, что-то подобное:

ReportsThirdparty.find(:all, :conditions => {:site_id=>site_id, :campaign_id=>campaign_id, :size_id=>size_id, :row_date=>"BETWEEN #{start_date} AND #{end_date}")

Даже если бы это действительно работало, я знаю, что использование интерполяции здесь оставило бы меня подвергающимся атакам с использованием кода на SQL.

16
задан Russ Bradberry 7 May 2010 в 17:36
поделиться

1 ответ

Я полагаю, что вы можете передать объект Range в ActiveRecord's find и получить то, что хотите:

ReportsThirdParty.find(:all, 
  :conditions => { 
    :site_id => site_id, 
    :campaign_id => campaign_id, 
    :size_id => size_id, 
    :row_date => start_date..end_date } )

Редактировать: Если вы используете Rails 3, вы можете ожидать использования чего-то подобного:

ReportsThirdParty.where( 
  :site_id => site_id, 
  :campaign_id => campaign_id, 
  :size_id => size_id, 
  :row_date => start_date..end_date)

Для получения дополнительной информации о запросах Active Record в Rails 3 посмотрите:
http://railscasts.com/episodes/202-active-record-queries-in-rails-3

37
ответ дан 30 November 2019 в 16:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: