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;

and I can get the players by using

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


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

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

Or you could use something like ez_where

Thanks for the help!