【问题标题】:Rails has many through with same modelRails 有很多相同的模型
【发布时间】:2017-02-04 00:51:18
【问题描述】:

我有一个用户模型和一个viewed_contractor 模型。我将用户模型视为客户和承包商。客户可以通过访问他们各自的个人资料来查看许多承包商。许多客户可以查看承包商。我的viewed_contractor 中有customer_id 和contractor_id。我想通过 has_many 处理这种关系。是否有可能彻底通过 has_many?

【问题讨论】:

    标签: ruby-on-rails has-many-through


    【解决方案1】:

    这是可能的。首先,您需要在 ViewedContractor 模型中为 belongs_to 关联指定 class_name 选项,以便它们都引用您的 User 类。然后,您可以在 User 模型中指定 has_many through: 关系。

    这样的事情应该可以工作:

    # viewed_contractor.rb
    class ViewedContractor < ActiveRecord::Base
      belongs_to :contractor, class_name: 'User', foreign_key: :contractor_id
      belongs_to :customer, class_name: 'User', foreign_key: :customer_id
    end
    
    # user.rb
    class User < ActiveRecord::Base
      has_many :viewed_contractors_as_contractor, class_name: 'ViewedContractor', foreign_key: :contractor_id
      has_many :viewed_contractors_as_customer, class_name: 'ViewedContractor', foreign_key: :customer_id
    
      has_many :visited_contractors, through: :viewed_contractors_as_customer, source: :contractor
      has_many :visited_customers, through: :viewed_contractors_as_contractor, source: :customer
    end
    

    【讨论】:

    • 太棒了 :) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多