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