我想创建一个应用程序,用户可以创建一个房间,并且是唯一的所有者。其他用户应该能够加入一个房间,当时只有一个房间,只有他们应该能够看到这个房间里发生的事情。
所以我创建了一个控制器rooms_controller和模型房间。
顺便说一句,我正在使用设计来处理所有的用户信息。
那么我应该把什么放入user.rb文件? has_one:房间? belongs_to:房间? 用户如何加入模型?
答案 0 :(得分:0)
您可以通过这种方式设计模型。您实际上可以有两种类型的用户:Owner
和User
,他们可以从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
有一个room
,room
属于owner
。
user
有许多rooms
,room
属于user
。
您必须在owner_id
表格中添加user_id
和rooms
。
您还可以在user_type
表格中添加base_users
列,以指明此用户的类型(即owner
或user
)。
另外,看看cancancan gem这是Ruby on Rails应用程序的授权Gem。您将需要具有不同类型的能力,例如:所有者将能够创建房间但用户无法创建房间,他们只能加入。您需要使用授权处理这些事情。
答案 1 :(得分:0)
用户与Room有一对一的关系吗?在那种情况下,用户has_one Room。或者用户可以创建多个房间吗?用户可以加入会议室,例如,如果有一个Rooms_Visitors表,其中RoomId和UserId标识一行。
如果不了解您的广泛用例,很难回答。 我建议您研究一下SQL关系,然后您的用例的答案将变得清晰。