Как указано здесь:
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
inverse_of указывает, что Rails кэширует в ассоциациях памяти и минимизирует запросы к базе данных. Их пример:
class Dungeon < ActiveRecord::Base
has_many :traps, :inverse_of => :dungeon
has_one :evil_wizard, :inverse_of => :dungeon
end
class Trap < ActiveRecord::Base
belongs_to :dungeon, :inverse_of => :traps
end
с которым они немедленно следуют:
for `belongs_to` associations `has_many` inverse associations are ignored.
Итак, у меня есть несколько вопросов.
- Заменяются ли обратные ассоциации на
has_many
для abelongs_to
? Если да, то как их пример имеет смысл? Разве он не должен ничего делать? -
Насколько я могу судить (при условии, что он что-то делает) Все это позволяет сделать что-то вроде:
dungeon.traps.first.dungeon
с окончательным вызовом
.dungeon
НЕ генерирует весь новый запрос, а просто достигает связи с памятью. Предполагая, что это правильно, почему я никогда не хочу этого поведения? Почему бы мне просто не вставитьinverse_of:
в каждую ассоциацию?