ここで概説したように:
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
ますbelongs_to
か? もしそうなら、彼らの例はどのように理にかなっていますか? 何もしなくてもいいのではないですか? 私が知る限り(それが何でもできると仮定して)これができることはすべて次のようなものです:
dungeon.traps.first.dungeon
.dungeon
新しいクエリ全体を生成するのではなく、メモリ内の関連付けに到達するだけです。それが正しいと仮定すると、なぜ私はその振る舞いを望まないのでしょうか? なぜ私はinverse_of:
すべての関連付けに固執しないのですか?