Frage

Ich bin neu in sowohl Ruby und Active. Ich habe derzeit einen Bedarf zu ändern und bestehendes Stück Code einen Datumsbereich in der Auswahl hinzuzufügen. Das aktuelle Stück geht so:

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

Nun, ich brauche einen Bereich hinzufügen, aber ich bin nicht sicher, wie die BETWEEN oder >= oder <= Betreiber zu tun. Ich denke, was brauche ich etwas ähnlich ist:

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

Auch wenn diese Arbeit getan hat, ich weiß, dass Interpolation hier verlassen würde mich unter SQL-Injection-Angriffe.

War es hilfreich?

Lösung

Ich glaube, Sie ein Range-Objekt zu Active des Fund passieren können und bekommen, was Sie wollen:

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

Edit: Wenn Sie mit Rails 3 können Sie erwarten, etwas ähnliches zu verwenden:

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

Für weitere Informationen über Rails 3 Active Record Abfragen check out:
http://railscasts.com/episodes/202-active-record -queries-in-Schienen-3

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top