Rails 3 ассоциация стремится нагрузка против противоположной ассоциации

У меня есть связанные модели, как это:

class Batch
  has_many :logs

class Log
  belongs_to :batch

Я использую include для загрузки пакетов с журналами:

b = Batch.includes(:logs)

Который запускается 2 выбирает как ожидалось (партии и журналы).

Тогда я делаю

b.first.logs.first.batch

и это вызывает другой выбор в партиях, даже если они уже были загружены. Я решил "исправить" это, используя include (:logs =>:batch), но я все еще думаю, что здесь что-то не так, потому что одни и те же партии загружаются дважды. Что дает?

1 ответ

Решение

Это можно исправить с помощью параметра:inverse_of, которое позволяет ActiveRecord знать, что две ассоциации обратны друг другу.

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

class Log
  belongs_to :batch, :inverse_of => :logs
end
Другие вопросы по тегам