26

inverse_ofモンゴイド連想ではどういう意味ですか? それなしの単なる関連付けの代わりに、それを使用することで何が得られますか?

4

1 に答える 1

42

単純なリレーションでは、2 つのモデルを 1 つの方法でのみ関連付けることができ、リレーションの名前は自動的に、関連付けられているモデルの名前になります。ほとんどの場合、これで問題ありませんが、常に十分であるとは限りません。

inverse_of参照している関係を指定できます。これは、リレーションにカスタム名を使用したい場合に役立ちます。例えば:

class User
  include Mongoid::Document
  has_many :requests, class_name: "Request", inverse_of: :requester
  has_many :assignments, class_name: "Request", inverse_of: :worker
end

class Request
  include Mongoid::Document
  belongs_to :requester, class_name: "User", inverse_of: :requests
  belongs_to :worker, class_name: "User", inverse_of: :assignments
end

この例では、ユーザーはチケットをリクエストすることも、チケットに割り当てることもできます。これら 2 つの異なる関係を表すには、同じモデルに対して異なる名前で 2 つの関係を定義する必要があります。Usinginverse_ofは、「リクエスト」が「リクエスタ」に対応し、「割り当て」が「ワーカー」に対応していることを Mongoid に知らせます。ここでの利点は 2 つあります。関係に意味のある名前を使用できることと、複数の方法で 2 つのモデルを関連付けることができます。詳細については、Mongoid Relationsのドキュメントを参照してください。

于 2013-05-30T22:26:58.243 に答える