我正在尝试设置推介模型。推荐包含被推荐的用户,进行推荐的用户和医生
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
答案 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
列表中的推荐人推荐。
我还没有对此进行过测试,但我可能错了,但是一旦你试一试,我们就会进行迭代。