考慮一個簡單的例子,我們有2個模型,文章和類別。爲什麼/只有通過Rails 3中的關聯才能訪問一個記錄數組的類方法?
class Article < ActiveRecord::Base
belongs_to :category
def self.search(title)
where(:title => title)
end
end
class Category < ActiveRecord::Base
has_many :articles
end
現在,軌控制檯上:
Article.all.search('test article')
正如預期的那樣返回一個錯誤
NoMethodError: undefined method `search' for #<Array:0x9aa207c>
但是,當我做到這一點
Category.first.articles.search('test article')
返回一組記錄!
這促使上的
Article.all
類和檢查
Category.first.articles
都返回陣列類。
顯然,文章的類方法'搜索'正在運行時引入,並通過其關聯(類別)訪問時提示「正確」返回記錄,但在類自身(文章)訪問時會有其他行爲。
那麼,發生了什麼?
啊!懶惰加載。謝謝 ! – Shreyas 2011-03-30 04:13:24