2016-09-17 86 views
3

我正在構建一個Rails照片庫應用程序,該應用程序允許用戶創建私人圖庫並邀請用戶以不同權限(即查看器和編輯器)訪問圖庫。ActiveRecord與關聯類型字段的多對多表 - Rails

我想到galleries_users表將需要解決許多一對多relationsip:

user_id | gallery_id 
-------------------- 
1  | 4 
-------------------- 
2  | 4 

但我應存儲關聯許可類型?我可以只添加一個permission字段:

user_id | gallery_id | permission 
--------------------------------- 
1  | 4   | edit 
--------------------------------- 
2  | 4   | view 

這是正確的軌道嗎?

我也看到了Rolify的寶石,但使用這將意味着添加一個用戶到一個畫廊(通過上面的方法),並通過Rolify的界面分別添加一個角色。除非有辦法,我可以跳過將用戶添加到畫廊並將角色視爲關聯的第一步?

回答

0

我認爲,不要使用多對多的關係,你可以嘗試一對多的關係。話雖如此,我的意思是保持所有者和畫廊的關係是分開的,即不要將畫廊所有者與受邀用戶混合在一起,因爲它可能會在將來的實施中產生問題,並嘗試在另一個表中保留invite_users。

1)業主 - 畫廊 - >一對多的關係

表1:用戶

表2:像冊

2)受邀請的用戶:

表3:invited_users

你可以用像gallery_id,view_permission_user_ids_arr,edit_permission_user_ids_arr等列來創建此表格。

因此,對於每個畫廊,您都可以擁有可方便查看/編輯權限的用戶ID數組。

希望它可以幫助你。

+0

感謝您的回覆。對不起,我忘了提及沒有畫廊老闆。創建圖庫的用戶應自動獲得編輯權限。這意味着混合邀請用戶和創作者不是問題 – slehmann36

+0

@ slehmann36 ..在這種情況下,多對多關係似乎是更好的方法。而關於權限領域,我認爲需要有這樣的區分因素,所以有權限的領域是必須的,或者你可能會想到兩個單獨的領域,如edit_permission,view_permission等,這可能會幫助你查詢數據庫。 –