ActiveRecord4でhas_manyリレーションを定義する際、逆方向のリレーションをinverse_ofで指定することで、オブジェクトをメモリ空間内で効率化することができます。 例えば下記のようなモデルがあるとします。 上記のリレーションにおいて、DungeonのtrapsとTrapのDungeonは逆方向のリレーションであるため、同一のオブジェクトはメモリ内でも同一に扱うことができるはずです。 しかし、ActiveRecord4のデフォルトの動作ではそのような最適化は行ってくれません。 d = Dungeon.first t = d.traps.first d.level == t.dungeon.level # => true d.level = 10 d.level == t.dungeon.level # => false 上記のコードにおいて、dとt.dungeonはDB