DragonOneBlue 2010-05-19 21:56
浏览 185
已采纳

activerecord的关联查询优化

我有这样的一个关联
Article -> has_many comments

comment -> has_many replies

如果我有一个Article a, 通过这样的链获得 a.comments.replies了之后,对其中一个reply这样调用,reply.comment.article.id的话,就会再次查询数据库,而不是直接用之前的article的对象,我怎么样才可以避免?谢谢

  • 写回答

2条回答 默认 最新

  • zaqwsxedc 2010-05-20 07:45
    关注

    刚好我前些天也想过这个问题,在网上找了好久也没有答案。最后,只能自己解决了。
    我的做法是,override ActiveRecord::Associations::AssociationCollection#find_target, 在这个方法里给每一个target增加一个owner属性,属性值是@owner。之后,使用owner属性就可以了。

    除非非常肯定owner是什么,否则这样使用有很大的风险。ActiveRecord本身不支持这样的用法,应该也是有原因的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line