Mysql 在Rails框架中创建类似Whatsapp的模型。

Mysql 在Rails框架中创建类似Whatsapp的模型。,mysql,ruby-on-rails,ruby,Mysql,Ruby On Rails,Ruby,背景:我是Rails新手,已经完成了Michael Hartl Ruby on Rails教程。 我读过Rails 5的敏捷Web开发。 所以在实践中,我试图设计类似WhatsApp的框架,但在创建用户和组模型时遇到了问题 问题:我尝试了不同的用户和组模型关系,但由于某些原因,每个模型都失败了。我尝试了几个路径,因此我将在下面列出它们。我不需要代码,只需要用户、管理员、组和参与者之间的正确数据库关系。我们还应该能够通过UI添加关系 我们有两个表User和Group。Admin属于Group。Gr

背景:我是Rails新手,已经完成了Michael Hartl Ruby on Rails教程。 我读过Rails 5的敏捷Web开发。 所以在实践中,我试图设计类似WhatsApp的框架,但在创建用户和组模型时遇到了问题

问题:我尝试了不同的用户和组模型关系,但由于某些原因,每个模型都失败了。我尝试了几个路径,因此我将在下面列出它们。我不需要代码,只需要用户、管理员、组和参与者之间的正确数据库关系。我们还应该能够通过UI添加关系

  • 我们有两个表User和Group。Admin属于Group。Group有许多Admin。这个团体有许多参与者。参与者属于组。参与者是具有用户id和组id的新表
  • 我们有三个表User、Group和Admin_Participant。Admin_Participant表包含Admin_of column和Participant_of column,一个User_id column。Admin_of和Participant_of将包含Group_id
  • 与第一个类似,但我们有一个不同的admin表,其中包含用户id、组id和is\u admin的布尔表
  • 组是对用户的引用,管理列是布尔值。参与者被添加到用户表中,也是布尔值

  • 还有一件事一旦用户创建了组,他就被指派为该组的管理员。记住参与者的限制。

    所以这可能太离谱了,但我只看到两个表,用户和组。用户可以是管理员和/或参与者。用户和组之间的关系可能是has_或_-attown_-to_-many,因为一个用户可以属于多个组,而一个组可以有多个用户。此外,为了实现user/admin/participant的区别,我甚至可以使用STI(单表继承)对其进行子类化,而不是使用布尔值来确定某人是否是管理员

    所以这可能太离谱了,但我只看到两个表,用户和组。用户可以是管理员和/或参与者。用户和组之间的关系可能是has_或_-attown_-to_-many,因为一个用户可以属于多个组,而一个组可以有多个用户。此外,为了实现user/admin/participant的区别,我甚至可以使用STI(单表继承)对其进行子类化,而不是使用布尔值来确定某人是否是管理员

    正如您指定的,您需要的是关系模型而不是代码。 我想我能帮上忙。 你可能需要重塑整个数据库,但如果我是你,我会像

  • 用户名、用户名、mob\u id、mob\u no、组(在有人需要登录之前,我的应用程序会向他们发送代码,他们可以通过该代码验证自己是否是该mob no的所有者。//我们不会详细讨论此问题。//)
  • ########有很多:团体
  • 组-名称,用户,管理员(布尔值)(我为管理员创建了一个不同的列,用户列存储用户的用户id,当有人创建一个组时,他自动成为管理员,因此管理员列对于该用户id变为真。稍后,管理员也可以创建其他管理员。。。[如果你在实现这一点上有问题,我建议你打开michael hartl的书,读一读他如何让一个示例用户成为管理员,管理员可以删除其他用户,这会有所帮助])
  • ##########属于:用户
  • 我不明白你将如何实现一个组的管理来向组中添加用户, 因此,在这种情况下,我想提出以下建议- $如果用户跟踪了其他用户,则可以将该用户添加到组中。。。 $或类似facebook的系统,用户可以在该系统中获得用户的邀请,然后由用户决定是否加入

  • %请评论,让我知道这是否有帮助。还有任何其他建议。

    正如您指定的,您需要的是关系模型,而不是代码。 我想我能帮上忙。 你可能需要重塑整个数据库,但如果我是你,我会像

  • 用户名、用户名、mob\u id、mob\u no、组(在有人需要登录之前,我的应用程序会向他们发送代码,他们可以通过该代码验证自己是否是该mob no的所有者。//我们不会详细讨论此问题。//)
  • ########有很多:团体
  • 组-名称,用户,管理员(布尔值)(我为管理员创建了一个不同的列,用户列存储用户的用户id,当有人创建一个组时,他自动成为管理员,因此管理员列对于该用户id变为真。稍后,管理员也可以创建其他管理员。。。[如果你在实现这一点上有问题,我建议你打开michael hartl的书,读一读他如何让一个示例用户成为管理员,管理员可以删除其他用户,这会有所帮助])
  • ##########属于:用户
  • 我不明白你将如何实现一个组的管理来向组中添加用户, 因此,在这种情况下,我想提出以下建议- $如果用户跟踪了其他用户,则可以将该用户添加到组中。。。 $或类似facebook的系统,用户可以在该系统中获得用户的邀请,然后由用户决定是否加入
  • %请评论,让我知道这是否有帮助。还有任何其他建议。

    3个表格(及其模型)就足够了

  • 使用者

    • 有许多参与者
    • 通过参与者有许多小组
  • 团体

    • 属性:创建人(用户id)
    • 有许多参与者
    • 通过参与者拥有许多用户
  • 参与者

    • 属于集团
    • 属于用户
    • 属性管理
  • 如果管理员也是参与者,则上述操作应该有效。 如果有非参与者的管理员,则需要额外的“参与”或“非参与者”栏

    除非admin具有其他属性,否则不需要admin表

    如果您还没有,最好通过<