看起來,當我抓取一些層次結構的ActiveRecord時,有相當多的命中數據庫。我使用:include選項改進了這一點,以充實儘可能多的結構。即便如此,ActiveRecord似乎並沒有將關係的相對方(例如父子)映射爲對記錄的唯一引用。也就是說,我們得到了一個可導航的ActiveRecord結構,但據我所知,它並不能保證給定記錄的唯一副本。有沒有一種方法可以確保ActiveRecord層次結構中每個記錄的一個對象引用?
node = Node.find(1, :include => {:document => :node})
node.object_id #A
node.document.node.object_id #B although I expect/desire A
在ActiveRecord中不可避免的?有其他人因爲這樣的缺點而轉移到其他ORM嗎? (不要誤解我的意思:ActiveRecord是一個很棒的工具,但是所有的工具都有其優點和缺點)
假設我要寫自己的SQL查詢(它甚至可以是一個存儲過程),返回多個結果集包含我的ActiveRecord層次結構的所有相關數據。有沒有一種無痛的方式,我可以明確映射關聯,而不會讓ActiveRecord錯誤地顯示我的顯式映射以嘗試創建新的關聯?
您可能對此問題感興趣:http://stackoverflow.com/questions/1303874/why-is-activerecord-not-smart-enough-to-know-that-the-objectid-of-the-father -sho – 2009-10-01 20:55:02
是的,謝謝莎拉。我有點問同樣的事情。 – Mario 2009-10-05 12:11:06