gpt4 book ai didi

mysql - 从 has_many :through, 中的连接表访问数据,防止加载额外的数据

转载 作者:行者123 更新时间:2023-11-30 22:51:22 24 4
gpt4 key购买 nike

导轨 4.1.7

我有 3 个模型。

# Report
class Report < ActiveRecord::Base
has_many :computed_values, dependent: :destroy
has_many :settlements, through: :computed_values
end

# ComputedValue
class ComputedValue < ActiveRecord::Base
belongs_to :report
belongs_to :settlement
end

# Settlement
class Settlement < ActiveRecord::Base
has_many :computed_values
has_many :reports, through: :computed_values
end

ComputedValue 有一个属性 distance

我想得到这样的建筑工程:Report.first.settlements.first.distanceComputedValue.find(report_id: Report.first.id, settlement_id: Report.first.定居点.first.id).distance

有什么优雅快速的方法可以让它发挥作用吗?

当我调用 Report.first.settlements.first 时,Rails 已经从连接表 computed_values 加载了第一次报告、第一次结算和记录的记录。如何防止从 computed_values 第二次加载以查找值并使用已加载记录中的数据?

最佳答案

好的,我找到了解决方案。

# Report
has_many :settlements, -> {select("settlements.*, computed_values.distance AS distance")},
through: :computed_values

在那之后,Report.first.settlements.first.distance 就完美无缺了!

关于mysql - 从 has_many :through, 中的连接表访问数据,防止加载额外的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28065646/

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