2011-03-18 68 views
5

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的唯一缺點是缺少文檔,您可能會提供幫助。

那麼你怎麼看待這個問題呢?

回答

4

Rails 3允許您使用Datamapper,而不是默認情況下。它你想的DataMapper與軌道3.使用只是這樣做

 
    rails new project_name -m http://datamapper.org/templates/rails.rb 

Rails允許你選擇,你甚至可以用使用--skip-主動記錄選項。 :)(可能不是直接的,但它的存在。

,是的,DataMapper的是真棒。:)

+0

我知道並使用它。但這並不是那麼清楚(在rails中,你無法找到它,只有「skip-active-record」) – AlexParamonov 2011-03-18 11:46:30

1

缺少文檔是一個巨大的問題。我已經開始使用DataMapper進行數據庫的開發了,並決定爲我的數據實現一個Web界面。將DM納入Rails作爲每個初學者都是一個巨大的挑戰。因此,我很好奇,你知道任何顯示DM/Rails使用的資源嗎?當我不確定如何繼續時,我很樂意看到一些東西。

+0

我自己走過這條路,同時完全放棄了DM。幾乎沒有交通DM郵件列表和答案非常緩慢。 AR似乎並不像DM那麼直截了當,但我認爲如果你真的想用你的應用程序進行製作,AR絕對沒有辦法。 AR附近的生態系統就像大量的寶石一樣依賴於它,這是堅持AR的理由。 – lumpidu 2012-04-13 15:37:53