2010-08-03 88 views
1

要獲取所有ActiveRecord的東西你的類必須從ActiveRecord::Base繼承:爲什麼ActiveRecord不是一個模塊?

class Post < ActiveRecord::Base 

爲什麼不要求用戶include的ActiveRecord作爲一個模塊來代替?

這種方法的優點是Rails可以在模型目錄中的所有類中自動包含ActiveRecord,使其對用戶完全透明。 I.e .:

class Post # no `< ActiveRecord::Base`! 

這是Rails中的一個(相對較小的)設計缺陷嗎?

回答

1

ActiveRecord不是Hibernate。 ActiveRecord模型不是純模型 - 它們是顯式的活動記錄並遵循活動記錄模式的語義。

這不是設計缺陷。這是一個完全不同的設計目標。

我當然想看看Ruby Hibernate。但ActiveRecord不是。

馬丁福勒describes的活動記錄爲:

在一個數據庫中的表或視圖包裝了一個行的對象,封裝了數據庫訪問,以及在該數據添加域邏輯。

+0

是不是DataMapper更像Hibernate? (只有紅寶石,所以這可能是一個誤解。) – 2010-08-03 02:01:04