Active Record关联has_many具有多个外键

时间:2015-08-19 14:22:55

标签: ruby-on-rails activerecord

我正在尝试设置推介模型。推荐包含被推荐的用户,进行推荐的用户和医生

class User < ActiveRecord::Base
  has_many :referrals
  belongs_to :profile, polymorphic: true
end

class Referral < ActiveRecord::Base
  belongs_to :user
  belongs_to :referrer, :class_name => "User"
  belongs_to :doctor, :class_name => "User"
end

我能够创建通用has_many :referrals以查看已提交给用户的医生,但我也希望看到您转介给他人的医生(使用referrer列)。

我试过has_many :doctors_referred, primary_key: "referrer_id"has_many :doctors_referred, through: :referrals ,source: "referrer"但没有运气。如何查看用户推荐的医生?

# mostly irrelevant 
class PatientProfile < ActiveRecord::Base
  has_one :user, as: :profile
end

class DoctorProfile < ActiveRecord::Base
  has_one :user, as: :profile
end

1 个答案:

答案 0 :(得分:0)

我的第一次尝试就是:

class User < ActiveRecord::Base
  has_many :referrals_as_referrer, source: :referred
  has_many :referrals_as_referree, source: :user

  has_many :doctors_as_referrer, through: :referrals_as_referrer
  has_many :doctors_as_referree, through: :referrals_as_referree
end

这里的问题是说has_many :referrals是不够的,因为您可以在推荐人或推荐人处推荐推荐人。使用此功能,您可以输入user.referrals_as_referrer,其中会提供user为引荐来源的引荐列表。您还可以编写user.doctors_as_referrer来查看之前的关联,并检索代表医生的用户列表,这些用户由user.referrals_as_referrer列表中的推荐人推荐。

我还没有对此进行过测试,但我可能错了,但是一旦你试一试,我们就会进行迭代。