Rails:如何关联属于用户公司的用户?

时间:2009-08-19 01:50:51

标签: ruby-on-rails

我有一个用户和公司模型。用户可以拥有三种可能的角色:所有者,代理或最终用户。代理商和最终用户属于公司,而公司又属于所有者。您如何进行这些模型之间的关联?

habtm协会在这里有用吗?即用户可以拥有并属于许多公司。唯一的问题是用户应该只属于一家公司。但是,业主应该能够拥有许多公司。

此外,如果公司被销毁,我还需要删除属于该公司的所有用户。或者......如果所有者被销毁,所有公司(以及属于这些公司的用户)也应该被删除。我不确定habtm协会是否可以做到这一点。

1 个答案:

答案 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_idrole_in_company列仅用于代理和最终用户。为所有者留空 - 这就是owner_id列的用途。