用户拥有模型,其他用户可以加入此模型

时间:2015-09-04 10:39:31

标签: ruby-on-rails ruby-on-rails-4

我想创建一个应用程序,用户可以创建一个房间,并且是唯一的所有者。其他用户应该能够加入一个房间,当时只有一个房间,只有他们应该能够看到这个房间里发生的事情。

所以我创建了一个控制器rooms_controller和模型房间。

顺便说一句,我正在使用设计来处理所有的用户信息。

那么我应该把什么放入user.rb文件? has_one:房间? belongs_to:房间? 用户如何加入模型?

2 个答案:

答案 0 :(得分:0)

您可以通过这种方式设计模型。您实际上可以有两种类型的用户:OwnerUser,他们可以从BaseUser继承,其中BaseUser是具有所有常见用户属性的类。

而且,您的模型关联可能如下所示:

class BaseUser < ActiveRecord::Base
  # all the common user attributes here
end

class Owner < User
  has_one :room
end

class User < BaseUser
  has_many :rooms
end

class Room < ActiveRecord::Base
  belongs_to :owner
  belongs_to :user
end

owner有一个roomroom属于owneruser有许多roomsroom属于user

您必须在owner_id表格中添加user_idrooms。 您还可以在user_type表格中添加base_users列,以指明此用户的类型(即owneruser)。

另外,看看cancancan gem这是Ruby on Rails应用程序的授权Gem。您将需要具有不同类型的能力,例如:所有者将能够创建房间但用户无法创建房间,他们只能加入。您需要使用授权处理这些事情。

答案 1 :(得分:0)

用户与Room有一对一的关系吗?在那种情况下,用户has_one Room。或者用户可以创建多个房间吗?用户可以加入会议室,例如,如果有一个Rooms_Visitors表,其中RoomId和UserId标识一行。

如果不了解您的广泛用例,很难回答。 我建议您研究一下SQL关系,然后您的用例的答案将变得清晰。