ActiveRecord ::关系之谜

时间:2012-09-19 12:35:47

标签: ruby-on-rails-3 activerecord

请解释原因:

User.first.comments.class => Array
User.first.comments.missing_method => undefined method `missing_method' for []:ActiveRecord::Relation

为什么第一个线类是Array而另一个是Relation?

2 个答案:

答案 0 :(得分:1)

User.first.comments实际上返回一个AssociationProxy对象。当您致电User.first.comments.class时,您将获得一个数组,因为class方法未定义并被委派给其他人。

查看How do rails association methods work?

答案 1 :(得分:0)

因为方法User.first.comments存在并且它具有返回值数组,并且Relation注释中不存在missing_method。 comments是ActiveRecord ::具有返回值数组的Relation方法。