据我所知,你有一个可能属于一个公司的用户,如果有,它实际上可能会管理它。
你可以设置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