Rails 3关联急切负载与反向关联

时间:2012-12-16 21:31:50

标签: ruby-on-rails-3 associations eager-loading

我有这样的相关模型:

class Batch
  has_many :logs

class Log
  belongs_to :batch

我正在使用includes来加载带有日志的批次:

b = Batch.includes(:logs)

哪个运行2按预期选择(批次和日志)。

然后我做

b.first.logs.first.batch

并且这会在批次上触发另一个选择,即使它们实际已经加载了。 我想通过包含(:logs =>:batch)来“修复”它,但我仍然认为这里出了问题,因为相同的批次被加载了两次。是什么给了什么?

1 个答案:

答案 0 :(得分:0)

您可以使用:inverse_of设置解决此问题,该设置允许ActiveRecord知道这两个关联是彼此相反的。

class Batch
  has_many :logs, :inverse_of => :batch
end

class Log
  belongs_to :batch, :inverse_of => :logs
end