據我所知,你有一個可能屬於一個公司的用戶,如果有,它實際上可能會管理它。
你可以設置Group
有例如,company_id
,user_id
和admin
場(這樣你知道哪些用戶屬於哪個公司,如果他們還管理該公司)
對於用戶屬於只有一個公司,你可以每兩列(company_id
和user_id
)
你可以通過做
class Company < ActiveRecord::Base
has_many :groups
has_many :users, through: :groups
has_many :administrators, through: :groups, source: :user, conditions: ["groups.admin = ?", true]
end
01弄一個公司的管理員添加一個驗證的唯一性
,並呼籲所有用戶company.administrators
或company.users
你也可以做類似
class User < ActiveRecord::Base
has_one :group
has_one :company, through: :group
has_one :administered_company, through: :group, source: :company, conditions: ["groups.admin = ?", true]
end
,所以你可以調用user.company
或user.administered_company
等等...
是否每個公司有一個管理員用戶? – Becuzz 2012-03-12 21:08:24
是的,每個公司都有一個管理員用戶,但它也有幾個普通用戶。那麼,有沒有辦法做一個「has_one where」類型的關係? – Justin 2012-03-12 21:10:21
在這種情況下,爲什麼不在公司表上放置一個AdminUserId字段來描述哪個用戶是該公司的管理員? (我只是學習rails,所以我不確定神奇的rails語法是什麼) – Becuzz 2012-03-12 21:14:07