2012-07-06 104 views
0

我在我的Rails應用程序中使用Mongoid。我有一個用戶模型,我也有一個角色模型(認爲管理員,客人等)。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.new從Rails控制檯,我得到一個對象,似乎沒有一個字段來存儲被邀請者用戶。我該如何解決?我看到有人使用inverse_of,但我無法真正找到有關此過程的任何教程或文檔。

感謝您的幫助。

回答

1

好吧,想想這個---一個用戶將被邀請擔任很多角色,但該角色只會有一個用戶。現在,這不是has_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