2011-06-20 5 views
1

Je suis en train de créer un site permettant aux utilisateurs de publier des événements pour lesquels ils souhaitent vendre des billets.La logique Ruby on Rails en condition d'enregistrement active

Je vous écris une requête où les conditions sont les suivantes:

  • actif est égal à vrai
  • sales_stop est < Time.now

Le problème que je rencontre est à venir avec une condition qui teste si l'heure sales_stop d'un enregistrement est inférieure à Time.now.

Ci-dessous ce que j'ai d'ores et déjà:

@events = Event.paginate :page => params[:page], 
     :conditions => {:active => true}, 
     :order => "created_at DESC" 

À son tour, que je suis en train de jouer autour de la condition de sales_stop sans chance.

J'ai essayé quelque chose comme ceci:

@events = Event.paginate :page => params[:page], 
     :conditions => {:active => true, :sales_stop < Time.now}, 
     :order => "created_at DESC" 

Bien sûr, ne fonctionne pas.

Est-ce que quelqu'un sait comment je peux définir cette requête afin que je récupère seulement les enregistrements où l'attribut sales_stop est inférieur à Time.now?

Merci.

Répondre

1

Utilisez la syntaxe alternative pour: les conditions, qui utilise une liaison de style:

@events = Event.paginate :page => params[:page], 
     :conditions => ['active = ? AND sales_stop < ?', true, Time.now], 
     :order => "created_at DESC" 
1

Cela devrait fonctionner:

@events = Event.paginate :page => params[:page], 
    :conditions => ['active=? AND sales_stop < ?', true, Time.now], 
    :order => "created_at DESC" 

Juste une syntaxe différente.

+0

Yup, cela a semblé fonctionner. Merci pour l'aide. – Brian