2010-12-08 23 views
1

J'ai une application Ruby on Rails qui permet aux utilisateurs de créer un Box (gym), puis créer Workouts afin que les utilisateurs peuvent voir ce qu'ils vont faire ce jour-là.Existe-t-il un moyen de lister les enregistrements par created_at DESC mais seulement pour les dates actuelles et passées?

Box has_many :workouts 
Workout belongs_to :box 

Je donne à l'utilisateur la possibilité de modifier le champ workout.created_at et leur permettre d'entrer dans des séances d'entraînement pour les dates futures. Sur la page /view/boxes/show.html.erb, je veux seulement afficher les séances d'entraînement qui sont pour la date actuelle et dans le passé. Donc, essentiellement, je veux lister tous les entraînements par created_at DESC mais je ne veux pas de futures séances d'entraînement. Y a-t-il un moyen de le faire dans l'action du contrôleur?

@workouts = @box.workouts.all(:order => "created_at DESC") 

Sinon, quelle est la meilleure façon de procéder?

Répondre

4

Vous devriez juste pouvoir ajouter dans les conditions supplémentaires pour ne retourner les « dernières »:

@workouts = @box.workouts.all(:order => "created_at DESC", :conditions => ["created_at <= ?", Time.now]) 

Cela devrait afficher toutes les séances d'entraînement pour une boîte donnée, mais seulement ceux qui ont été créés aujourd'hui ou dans le passé.