【问题标题】:Rails: How to associate users belonging to companies belonging to a user?Rails:如何关联属于某个用户的公司的用户?
【发布时间】:2010-11-20 19:29:53
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    这是符合您要求的一种选择。但如果不更好地了解问题领域,就很难判断这是否是最佳方法。

    # 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 列的用途。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 1970-01-01
      • 2020-08-22
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多