2008-11-25 7 views

Répondre

6

je vous recommande de regarder la Railscast Episode on named_scope.

Idéalement, le code que vous cherchez serait:

named_scope :recent, 
    lambda { |*args| {:conditions => ["created_at > ?", (args.first || 7.days.ago)]} } 

Cela vous permettra de passer un paramètre à la portée du nom ou il sera par défaut sur les 7 derniers jours.

Vous appelez à l'aide:

MyModel.recent 
+0

fonctionne très bien, merci. –

+0

Je suis encore nouveau sur Rails, mais j'adore * cette fonction! –

0

Vous devez passer named_scope un proc il sera évalué chaque fois que l'appel à named_scope est exécuté. Sinon, si vous spécifiez Time.now, il s'exécutera une fois (au premier appel) et sera "mis en cache" jusqu'à ce que l'application soit redémarrée.

named_scope \ 
    :this_week, 
    :conditions => [ 
     %created_at > :time!, 
     proc {{:time => Time.now}} 
    ] 

Vous pouvez appeler le named_scope comme @ ar_object.this_week

+0

cet exemple renvoie des erreurs. "type inconnu de% string% created_at" –

Questions connexes