我有一个用户和公司模型。用户可以拥有三种可能的角色:所有者,代理或最终用户。代理商和最终用户属于公司,而公司又属于所有者。您如何进行这些模型之间的关联?
habtm协会在这里有用吗?即用户可以拥有并属于许多公司。唯一的问题是用户应该只属于一家公司。但是,业主应该能够拥有许多公司。
此外,如果公司被销毁,我还需要删除属于该公司的所有用户。或者......如果所有者被销毁,所有公司(以及属于这些公司的用户)也应该被删除。我不确定habtm协会是否可以做到这一点。
答案 0 :(得分:2)
这是一个符合您要求的选项。但如果不更好地理解问题领域,很难判断它是否是最佳方法。
# script/generate model user company_id:integer role_in_company:string
class User < ActiveRecord::Base
has_many :owned_companies, :class_name => "Company", :foreign_key => "owner_id", :dependent => :destroy
belongs_to :company
end
# script/generate model company owner_id:integer
class Company < ActiveRecord::Base
belongs_to :owner, :class_name => "User"
has_many :employees, :class_name => "User", :dependent => :destroy
end
company_id
和role_in_company
列仅用于代理和最终用户。为所有者留空 - 这就是owner_id列的用途。