我有这样的相关模型:
class Batch
has_many :logs
class Log
belongs_to :batch
我正在使用includes来加载带有日志的批次:
b = Batch.includes(:logs)
哪个运行2按预期选择(批次和日志)。
然后我做
b.first.logs.first.batch
并且这会在批次上触发另一个选择,即使它们实际已经加载了。 我想通过包含(:logs =>:batch)来“修复”它,但我仍然认为这里出了问题,因为相同的批次被加载了两次。是什么给了什么?
答案 0 :(得分:0)
您可以使用:inverse_of设置解决此问题,该设置允许ActiveRecord知道这两个关联是彼此相反的。
class Batch
has_many :logs, :inverse_of => :batch
end
class Log
belongs_to :batch, :inverse_of => :logs
end