Filter out or not showing event records that are in the past

My app shows a list of upcoming events. Without having to modify the
database frequently to keep up with the current date, I would like to be
able to keep the events that are now in the past from being shown. Can
I do this using filter? Any example or link to a tutorial would be
appreciated. Thanks!

Try this in your event model:

named_scope :upcoming, lambda { { :conditions => ['happens_at > ?',] } }

I've assumed that your scheduled date is named 'happens_at'; tweak as

--Matt Jones

If your tests pass, perhaps they're not doing what you think they are :slight_smile:

I know zip about ActiveScaffold, but I imagine you would get more
useful help if you posted your actual model code and the controller
code where you're calling your named scope.

Though -- a suggestion -- trying things out in the console is often an
effective way to debug a problem...


I have generated a simple event app to learn and try to debug
named_scope. But still have problem. My problem is still have not
figure out how to call the named_scope (i.e. Event.upcoming). Not
knowing exactly how, I tried to invoked it in various spots in the
controller and also the view to no avail (and also used script/console).
The online articles about named_scope I found just invoke it (or listed
the usage line) below the model class. It looks so simple to understand
but I guess I don't have enough brain power. Please help me out by
giving a more concrete example. Thanks!

Hassan Schroeder wrote:

Ex: named_scopes in a model:

  named_scope :mode, lambda { |mode| { :conditions => ['mode = ?', mode] } }
  named_scope :available, lambda { |current_user| { :conditions => [ "
permission = ? OR user_id = ?" , 'public', ] } }

:: and in the controller:

  @notes = Note.available(current_user).mode params[:mode]

:: which also demonstrates scope chaining, FWIW.


With your guidance, I have now seen named_scope work in my simple app by
invoking it in an action! Thanks!

Hassan Schroeder wrote: