2017-02-12 70 views
1

背景:我是Rails的新手,我經歷了Michael Hartl Ruby on Rails教程。 我已經閱讀了Rails 5的敏捷Web開發。 因此,在實踐中,我試圖設計WhatsApp框架,並在創建用戶和組模型時陷入困境。在Rails框架中創建一個類似Whatsapp的模型。

問題:我已經嘗試了不同的用戶和組模型關係並且每一個失敗一些reason.I已經嘗試數路徑,以便我將在下面招收。 我不需要代碼,只需要用戶,管理員,組,參與者之間的正確數據庫關係。我們也應該能夠通過UI添加關係。

  1. 我們有兩個表User和Group.Admin belongs_to Group.Group has_many Admins。組has_many partcipants。參與者belongs_to group.Participant是一個具有user_id和group_id的新表。
  2. 我們有三個表User,Group和Admin_Participant.Admin_Participant表包含admin_of列和participant_of列以及一個user_id column.admin_of和participant_of將包含group_ids。
  3. 與第一個類似,但我們爲admin包含user_id,group_id和is_admin的布爾表。
  4. 組是引用User和管理列是boolean.Participant被添加到用戶表,也是一個布爾值。

一件事一旦用戶創建,他被分配到是group.Remember的管理參與者的限制組。

+0

應該可以只用三個表:組,用戶和參股(USER_ID,GROUP_ID,is_admin)。 –

回答

0

3個表格(及其模型)應該足夠了。

  1. 用戶

    • 具有許多參與者
    • 具有穿過參與者
  2. 許多組組

    • 屬性:CREATED_BY(用戶ID)
    • 具有許多參與者
    • 通過參與者都有許多用戶
  3. 參與者

    • 屬於組
    • 屬於用戶
    • 屬性管理

以上應該工作提供管理員也是參與者。 如果有管理員不是參與者,那麼需要額外的「參與」或「非參與者」列。

除非管理員具有其他屬性,否則不需要管理員表。

在你還沒有的情況下,這是很好的經過guide

+0

良好的實施。使用另一個參與者列表的admin.Size用戶模型的管理員更容易添加有關管理員的限制,從而清除屬性的空間。 –

0

所以這可能是兔子洞太遠,但我只看到2個表,用戶和組。用戶可以是管理員和/或參與者。用戶和組之間的關係可能是has_or_belongs_to_many,因爲用戶可以屬於多個組,並且一個組可以擁有多個用戶。此外,爲了完成用戶/管理員/參與者的區別,我甚至可以用STI(單表繼承)來繼承它,而不是使用布爾值來確定某人是否是管理員。

+0

但爲了建立一種關係,你需要第三張桌子。 –

+0

的確如此,我應該說2個模型。 – boboguitar

0

如您所述,您需要關係模型而不是代碼。 我想我可以幫忙。 您可能需要重塑你的整個數據庫,但如果我是你,我會做這樣......

  1. 用戶 - 名,USER_ID,mob_no,組(之前有人需要登錄,我的應用程序會發送EM通過它們可以確認他們是暴民的所有者代碼中沒有//我們不會討論具體///)
########的has_many:組
  1. group - name,users,admin(boolean)(我爲admin創建了一個不同的列,用戶列存儲用戶的user_id,當有人創建一個組時,他自動理所當然地成爲管理員,所以管理員列成爲真正的用戶ID ..後來,管理員可以讓其他管理員以及...[如果你有實現這個問題,我建議開放邁克爾·哈特爾的書,讀他如何做出了表率用戶管理員和管理員可以刪除其他用戶,這將有助於])
####### ### belongs_to:用戶
  1. 我不明白你如何實現一個組的管理員將用戶添加到組, 所以在這種情況下,我想建議以下 - $如果用戶已經關注另一個用戶,他可以將該用戶添加到該羣組中...... $或者類似facebook的系統「,其中用戶獲得用戶邀請到該羣組,並且稍後其用戶決定他是否想加入或不是,

%請發表評論和lemme知道這是否有幫助。和其他任何建議。

+1

請花時間使用正確的格式,標點,大小寫和語法。堆棧溢出是一個在線參考書,這些事情都很重要。 –

相關問題