这可能是一个新手问题,但我似乎无法想出一个好的解决方案。我有一个company
表has_many users through groups
,也可以是公司的管理员(允许他们编辑公司,但每个用户只有一家公司)。
在Rails中设置它的最佳方法是什么?
我无法在用户表中添加admin
字段,因为它不会区分他/她管理的公司。但是如果我做一个company_id
字段,那么Rails中的关系会是什么样的(因为它是一种somtimes_has_one
关系!)。我可以在没有关系的情况下离开它,但这似乎不合适......
提前感谢您的帮助!
答案 0 :(得分:1)
根据我的理解,您有一个可能属于某个公司的用户,如果有,它实际上可以管理它。
您可以设置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
并为所有用户致电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
依旧......