ActiveRecord find_by shortcut
Some of you may have read an article from Jamis Buck a while back entitled ActiveRecord::Base find shortcut.
The tip offered in the article is that with a quick alias_method:
class << ActiveRecord::Base
alias_method :[], :find
end
you can save some typing in script/console:
prs = Person[5]
prs = Person[:first]
prs = Person[:all, :conditions => { :name => "Jamis" }]
This is a cool tip but what I find more useful is to define the [] method separately on each ActiveRecord model depending on the most accessed find_by method.
For example I have a site where accounts are identified by unique subdomains. I find myself in the console all the time doing:
>> Account.find_by_subdomain('foobar')
Now with a quick addition to the Account model:
class Account < ActiveRecord::Base
def self.[](subdomain)
find_by_subdomain subdomain
end
end
we can do:
>> Account['foobar']
Cool stuff. Now we can add the [] method to other models according to their most common lookup attribute.
Another example
class User < ActiveRecord::Base
def self.[](username)
find_by_username username
end
end
This very simple little tweak has made my script/console life much more bearable.


Commenting is closed for this article.