0

Rails アプリで Mongoid を使用しています。私にはユーザーモデルがあり、ロールモデルもあります (管理者、ゲストなどを考えてください)。

次のコードが可能になるように、Mongoid アソシエーションをセットアップしたいと考えています。

u = User.first
u.invited_roles # returns all roles a user has been assigned

r = Role.new
r.invitee = user # user id should be stored in the Role
r.save!

現在、私のモデルは次のように設定されています。

class User
  include Mongoid::Document
  has_many :invited_roles, :class_name => 'Role'
end

class Role
  include Mongoid::Document
  has_one :invitee, :class_name => 'User'
end

現在、Role.newRails コンソールから実行すると、招待されたユーザーを格納するフィールドがないように見えるオブジェクトが表示されます。これを修正するにはどうすればよいですか? inverse_of を使用している人を見たことがありますが、この手順に関するチュートリアルやドキュメントは実際には見つかりません。

助けてくれてありがとう。

4

1 に答える 1

1

さて、これについて考えてみてください --- ユーザーは多くの役割を持つように招待されますが、その役割には 1 人のユーザーしかいません。さて、これは has_one の意味での「have one」ではありません。代わりに、子関係を定義しています。

したがって、has_one を belongs_to に変更すれば、成功です。

class User
  include Mongoid::Document
  has_many :invited_roles, :class_name => 'Role'
end

class Role
  include Mongoid::Document
  belongs_to :invitee, :class_name => 'User'
end
于 2012-07-06T19:39:06.430 に答える