2017-04-19 41 views
0

我嘗試創建一個GROUPE那種制度: - 陽獅集團可以有很多用戶 - 所有用戶都可以創建一個GROUPE - 但陽獅集團中庸之道有一個老闆誰可以邀請羣組中的其他用戶。Ruby on Rails的:創建了許多用戶和一個所有者組

在我探微此刻有這樣的邏輯:

class Groupe 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    has_many :memberships 
    has_many :users 
end 

class Membership 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    belongs_to :user 
    belongs_to :project 
end 

class User 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    has_many :memberships 
    has_many :projects 
end 

,當我看着我的DB(蒙戈)我沒有看到誰創造陽獅集團user_ID的,我想,我想,這創建羣組的用戶成爲所有者並可以邀請其他用戶。

有人知道如何實現這個?

+0

一個用戶有很多組? –

+0

一個用戶可以創建很多組,並且一個組可以擁有很多用戶 –

+0

因此我們可以說用戶和組擁有'n到n'的關係。有一些缺失:模型'UserGroupe'和Table'users_groupes'?應該需要表'users_groupes'中的列'is_owner'(布爾值)? –

回答

1

由於每個組都有一個所有者,那麼你可以像這樣定義的組和用戶之間的新關係,

class Group 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    has_many :users 
    has_one :owner, class_name: 'User' 
end 

class User 
    include Mongoid::Document 
    include Mongoid::Timestamps 

    belongs_to :group  
end 

當創建一個新的組,它的主人尚未設定。

g = Group.create 
=> #<Group _id: 58fd7f26476bf77e8f52c349, > 
g.owner 
=> nil 

然後將所有者設置爲用戶,也許當前用戶在您的情況。我只是爲這個演示創建一個。這項任務的好處是,集體所有權可以在未來轉移給另一個人。

owner = g.users.create 
=> #<User _id: 58fd7f47476bf77e8f52c34a, group_id: BSON::ObjectId('58fd7f26476bf77e8f52c349')> 
g.owner = owner 
=> #<User _id: 58fd7f47476bf77e8f52c34a, group_id: BSON::ObjectId('58fd7f26476bf77e8f52c349')> 

添加更多用戶到該組

g.users.create 
=> #<User _id: 58fd7fd4476bf77e8f52c34b, group_id: BSON::ObjectId('58fd7f26476bf77e8f52c349')> 
g.users 
=> [#<User _id: 58fd7f47476bf77e8f52c34a, group_id: BSON::ObjectId('58fd7f26476bf77e8f52c349')>, #<User _id: 58fd7fd4476bf77e8f52c34b, group_id: BSON::ObjectId('58fd7f26476bf77e8f52c349')>] 

現在該集團有兩個用戶。

+0

謝謝你的回答!它工作得很好! –