我的 ActiveRecord 没有说实话。你自己看:
> User.posts.class
=> Array
> User.posts.all.class
=> Array
> a = Array.new
> a.class
=> Array
> a.all
NoMethodError: undefined method `all' for []:Array
没有Array#all
方法,所以User.posts
不能是Array
. 这里发生了什么?
我的 ActiveRecord 没有说实话。你自己看:
> User.posts.class
=> Array
> User.posts.all.class
=> Array
> a = Array.new
> a.class
=> Array
> a.all
NoMethodError: undefined method `all' for []:Array
没有Array#all
方法,所以User.posts
不能是Array
. 这里发生了什么?
这是在 Rails 中实现关联的方式。它们是惰性代理对象。
Ruby 有一个单例方法的概念。这意味着对象可以更改其类定义的行为。读这个。