rails关联方法如何工作?让我们考虑这个例子
class User < ActiveRecord::Base
has_many :articles
end
class Article < ActiveRecord::Base
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
现在我可以做点什么了
@user = User.find(:first)
@user.articles
Run Code Online (Sandbox Code Playgroud)
这会抓取属于该用户的文章.到现在为止还挺好.
现在我可以继续在某些条件下对这些文章进行查找.
@user.articles.find(:all, :conditions => {:sector_id => 3})
Run Code Online (Sandbox Code Playgroud)
或者简单地声明和关联方法
class User < ActiveRecord::Base
has_many :articles do
def of_sector(sector_id)
find(:all, :conditions => {:sector_id => sector_id})
end
end
end
Run Code Online (Sandbox Code Playgroud)
并做
@user.articles.of_sector(3)
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,这find对ActiveRecord使用关联方法获取的对象数组有何影响?因为如果我们实现我们自己的User实例方法调用articles并编写我们自己的实现,它给出了与关联方法完全相同的结果,那么ActiveRecord对象的获取数组上的查找将不起作用.
我的猜测是,关联方法将某些属性附加到获取对象数组,从而可以使用find其他ActiveRecord方法进一步查询.在这种情况下,代码执行的顺序是什么?我怎么能验证这个?