相关疑难解决方法(0)

rails关联方法如何工作?

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)

现在我的问题是,这findActiveRecord使用关联方法获取的对象数组有何影响?因为如果我们实现我们自己的User实例方法调用articles并编写我们自己的实现,它给出了与关联方法完全相同的结果,那么ActiveRecord对象的获取数组上的查找将不起作用.

我的猜测是,关联方法将某些属性附加到获取对象数组,从而可以使用find其他ActiveRecord方法进一步查询.在这种情况下,代码执行的顺序是什么?我怎么能验证这个?

activerecord ruby-on-rails model-associations

20
推荐指数
2
解决办法
1万
查看次数