Filter list results

Hey All,

What's the right way to make a list of something (games in my case)
but filtered by various parameters? For example, I have /game/list
showing all games, but if they specify /game/list/?
category=3&players=5 I want to show all games in that category that
allow 5 players.

Right now, I can get the category's games by using

      if defined? params[:category]
        @games = Category.find(params[:category]).games;
      end

and I can get the players by using

      if params[:players].to_i > 0
        @games = Game.find(:all, :conditions => ['players = ?',
params[:players]]);
      end

But how can I do both?

Any Ideas? I know how to do it with a straight SQL Query, but I'm not
sure if there is a more ruby-like way

Straight SQL isn’t bad for this kind of stuff… @games = Game.find_by_sql("select *…)

But there are other ways too. Conditions can be built up programatically…

See Ben Curtis’ well-written article on this approach:

http://www.bencurtis.com/archives/2008/06/restful-searching-in-rails/

Or you could use something like ez_where

http://opensvn.csie.org/ezra/rails/plugins/dev/ez_where/README.txt

Thanks for the help!