Extends many of your associations for free. Given the following models:
class Task < ActiveRecord::Base belongs_to :project end class Project < ActiveRecord::Base has_many :tasks belongs_to :company named_scope :five_letters, :conditions => "LENGTH(name) = 5" end class Company < ActiveRecord::Base has_many :projects has_many :tasks, :through => :project named_scope :five_letters, :conditions => "LENGTH(name) = 5" end
You can:
Get all projects belonging to a company:
Company.projects
Get all projects belonging to a company with a 5-letter name:
Company.five_letters.projects
It also works with has_many :through associations:
Company.tasks Company.five_letters.tasks
Return value is a scope, so you can still chain it:
Company.five_letters.projects.find_by_name("Wadus")
The same applies for belongs_to associations, for example you can get the companies with a five-letter project:
Project.five_letter.companies
Copyright © 2009 BeBanjo, released under the MIT license