gpt4 book ai didi

ruby-on-rails - 为什么 ActiveRecord 不够聪明,不知道父亲的 object_id 应该等于其 child 的父对象的 object_id?

转载 作者:数据小太阳 更新时间:2023-10-29 07:29:38 26 4
gpt4 key购买 nike

  @father = Hierarchy.find(:first, :conditions => ['label = ?', 'father'])

@father.children.each do |child|
puts @father.object_id == child.parent.object_id
end

我本以为这里的结果都是true

相反,它们都是 false

为什么 ActiveRecord 以这种方式工作,而不是将它们识别为相同的 Ruby 对象?

最佳答案

要尽可能返回现有对象而不是创建新对象,ActiveRecord 必须跟踪创建了哪些对象以及它们响应数据库中的哪个条目,这会产生一些开销。即使这样,它仍然必须在数据库中查找 child.parent 才能知道它与 @father 代表的条目相同,因此这种缓存不会带来任何可观的性能提升(在 ruby​​ 方面,它可以安全地分配多个对象,但以簿记开销为代价,但在数据库方面应该基本相同。

因此,鉴于 AR 人员可能认为防止不同对象对应于同一数据库条目是有害的或至少不值得付出努力,因此他们选择不这样做。

关于ruby-on-rails - 为什么 ActiveRecord 不够聪明,不知道父亲的 object_id 应该等于其 child 的父对象的 object_id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1303874/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com