看起来,当我抓取一些层次结构的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