DataMapper的想法是definitely better比ActiveRecord。它有一個用於各種數據存儲的API,包括RDBMS和NoSQL存儲。 DataMapper比ActiveRecord聰明得多。它有「戰略渴望加載」。這個特性一手抹去了「N + 1查詢問題」。此外,它允許像Text屬性一樣重載字段的延遲加載。 DataMapper允許您創建和搜索任何複雜的對象圖,只需提供條件的嵌套散列即可。 ActiveRecods不適合用於生產中的關聯。包含方法很醜並且不可配置。 2010年10月,Josh Symonds製作了一個patch for this method,允許將字段從急切加載中排除。但是那條路被忽略了,今天在rails3中我們有同樣醜陋的包含方法。使用DataMapper代替ActiveRecord
即使在Rails3中使用AREL,ActiveRecord也遠不是最好的rails for org。你可能會說「哇,那個新的gem metawhere允許編寫像Article.where(:title.matches => 'Hello%', :created_at.gt => 3.days.ago)
這樣好的代碼」。但是請等待...... DataMapper支持這個功能!也許而不是修改ActiveRecord看起來像DataMapper更好地擴展和支持更好的orm? DataMapper的更多細節可在http://datamapper.org/找到。
我認爲,以後版本中的rails應該允許我們選擇使用哪個orm,就像現在它允許數據庫選擇一樣。即使它只有一個選項「ActiveRecord」,人們會搜索可用的替代方案。當我開始學習rails時,我認爲只支持ActiveRecord。後來我甚至沒有嘗試尋找別的東西。
爲什麼我寫這些東西?我認爲,我們需要更多地關注這個漂亮的ORM。如果您是一些流行的或不是如此流行的gem的開發人員,請考慮添加對DataMapper的支持。 DataMapper社區應該從ActiveRecord或其他ORM編寫一些遷移指南,並且保持文檔不斷更新,並且您可能會幫助他們。至於我,DataMapper社區需要更多的人,你可能就是其中之一。 此ORM的唯一缺點是缺少文檔,您可能會提供幫助。
那麼你怎麼看待這個問題呢?
我知道並使用它。但這並不是那麼清楚(在rails中,你無法找到它,只有「skip-active-record」) – AlexParamonov 2011-03-18 11:46:30