我想創建一個應用程序,其中用戶可以創建一個房間並且是其唯一所有者。其他用戶應該能夠加入一個房間,當時只有一個房間,只有他們應該能夠看到本房間發生了什麼。用戶擁有一個模型,其他用戶可以加入此模型
所以我創建了一個控制器rooms_controller和模型房間。
順便說一句我用設計來處理所有Userstuff。
那麼我應該把什麼放入user.rb文件? has_one:房間? belongs_to:房間? 用戶如何加入模型?
我想創建一個應用程序,其中用戶可以創建一個房間並且是其唯一所有者。其他用戶應該能夠加入一個房間,當時只有一個房間,只有他們應該能夠看到本房間發生了什麼。用戶擁有一個模型,其他用戶可以加入此模型
所以我創建了一個控制器rooms_controller和模型房間。
順便說一句我用設計來處理所有Userstuff。
那麼我應該把什麼放入user.rb文件? has_one:房間? belongs_to:房間? 用戶如何加入模型?
您可以這樣設計模型。您實際上可以有兩種類型的用戶: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
。
您必須在您的rooms
表中添加owner_id
和user_id
。 您的base_users
表中還可以有user_type
列,用於指示此類型的用戶(即owner
或user
)。
另請參閱cancancan gem這是Ruby on Rails應用程序的授權Gem。例如,您需要具有不同類型的功能:所有者將能夠創建房間,但用戶無法創建房間,他們只能加入。你需要使用授權來處理這些事情。
用戶是否與房間有一對一的關係?在這種情況下,用戶擁有一個房間。或者用戶可以創建很多房間?例如,如果有Room_Visitors表,其中RoomId和UserId表示一行,則用戶可以加入房間。
如果不知道您的廣泛用例,它很難回答。 我建議你研究一下SQL關係,那麼你的用例的答案就會變得清晰。
用戶應該能夠創建一個房間,這個用戶是這個房間的所有者,不應該能夠創建或加入其他房間。每個其他用戶,不是所有者,都應該能夠加入一個房間,只有一個。 – Max
然後,如果一個用戶不能既是所有者又是訪問者,那麼@K M Rakibul Islam建議的繼承策略也是我會去做的。我只想改變模式是這樣的: #我們的系統 類用戶<的ActiveRecord :: Base的的用戶 #所有常見的用戶屬性在這裏,就像ID之類的東西 結束 類業主<用戶 HAS_ONE:房間 結束 類訪問者
很抱歉的壞格式,無法找到如何輸入模式的代碼 –
用戶在創建房間時可能會自動變爲「所有者」? – Max
它不會自動發生。但你可以這樣做。創建房間時,您可以將房主關聯到該房間,但許多用戶可以關聯(即可以用戶可以加入)該房間。 –
我的整個應用程序都是基於設計構建的。 cancancan必不可少? – Max