扩展你的ActiveRecord关联方法

class Organization < ActiveRecord::Base
  has_many :people
end

 

现在你可以通过organization.people来返回people集合,同时,你还拥有了以下方法:

organization.people<<、organization.people.build、organization.people.create、organization.people.find

 

我们也可以加入自己的方法。

 

class Organization < ActiveRecord::Base
  has_many :people do
    def find_active
      find(:all, :conditions => ["active = ?", true])
    end
  end
end

 

这时,我们可以通过organization.people.find_active获得激活的people集合。

 

你也可以将自定义的方法抽取出来,放入一个module中:

 

module FindActiveExtension
  def find_active
    find(:all, :conditions => ["active = ?", true])
  end
end

 

现在,model可以像下面这样来写:

 

class Organization < ActiveRecord::Base
  has_many :people, :extend => FindActiveExtension
end

 

你可能感兴趣的:(ActiveRecord)