I’m at the Ruby Hoedown in Huntsville this weekend. Being around so many brilliant geeks encouraged me to release a gem I’ve had sitting in the hopper for several weeks.
finder_filter encapsulates a pattern I find myself using quite frequently in Rails. Namely, looking up an instance variable before an action. For example:
class UsersController < ActionController::Base
before_filter :find_user, :only => [:show, :edit]
def show
# do something with @user
end
def edit
# do something with @user
end
def find_user
@user = User.find(params[:id)
end
end
Sticking the finder in a before filter keeps the code DRY, but it still takes several lines to do this. finder_filter reduces this to a single line of code:
class UsersController < ActionController::Base
finder_filter :only => [:show, :edit]
def show; end
def edit; end
end
There are other options to customize the column and param used in the lookup. Check out the README for full details.
To install the gem as a plugin in your Rails project:
sudo gem install pelargir-finder_filter --source=http://gems.github.com
Then open environment.rb in your Rails app and add the gem as a dependency in your initializer block:
Rails::Initializer.run do |config|
config.gem "pelargir-finder_filter"
...
end
If you have any comments or suggestions, I’d love to hear from you. Contact me through the finder_filter project on GitHub.