考虑一个简单的例子,我们有 2 个模型,文章和类别。
class Article < ActiveRecord::Base
belongs_to :category
def self.search(title)
where(:title => title)
end
end
class Category < ActiveRecord::Base
has_many :articles
end
现在,在 rails 控制台上:
Article.all.search('test article')
正如预期的那样返回错误
NoMethodError: undefined method `search' for #<Array:0x9aa207c>
但是当我这样做时
Category.first.articles.search('test article')
返回一组记录!
这会提示检查类
Article.all
和
Category.first.articles
都返回Array类。
显然,Article 的类方法“search”在运行时被引入,并在通过其关联(Category)访问时提示记录的“正确”返回,但在被类本身访问时(Article)表现不同。
那么,发生了什么事?