has_many : 通过外键和 2 个表
has_many :through with a foreign key with 2 tables
我有一个 User 模型和一个 UserReferral 模型(简化)。
基本上一个用户可以推荐其他用户,我会记录下来。但是一个用户只能被一个用户推荐。
User:
id
....
UserReferral:
id
user_id #the person initiating the referral
reffered_user_id #the person that got the referral
我希望能够对 return 第一个用户推荐的所有用户说 User.first.converted_users(可以为空)
我还希望能够对 return 推荐第一个用户的单个用户(可以为零)说 User.first.referring_user。
目前我在用户中有:
has_many :user_referrals
has_many :converted_users, through: :user_referrals, source: :user
并且在 UserReferral 中:
belongs_to :user
has_many :users, primary_key: 'reffered_user_id', class_name: 'User'
我尝试了各种关联组合,如有任何帮助,我们将不胜感激。我读过其他几个答案,但它们都涉及第三个连接 table,我认为我不一定需要。
经过反复试验(并了解关联):
在用户中:
# User whom I referred
has_many :referrals
has_many :converted_users, through: :referrals, :foreign_key => "id", :primary_key => "reffered_user_id", class_name: "User"
# User who referred me
has_one :referral, foreign_key: 'reffered_user_id'
has_one :referrer, through: :referral, source: :user
在推荐中:
belongs_to :user
has_one :converted_user, primary_key: "reffered_user_id", foreign_key: 'id', class_name: 'User'
如果有人有改进,很想知道。如果有更好的答案,我会等几天接受。
我有一个 User 模型和一个 UserReferral 模型(简化)。
基本上一个用户可以推荐其他用户,我会记录下来。但是一个用户只能被一个用户推荐。
User:
id
....
UserReferral:
id
user_id #the person initiating the referral
reffered_user_id #the person that got the referral
我希望能够对 return 第一个用户推荐的所有用户说 User.first.converted_users(可以为空)
我还希望能够对 return 推荐第一个用户的单个用户(可以为零)说 User.first.referring_user。
目前我在用户中有:
has_many :user_referrals
has_many :converted_users, through: :user_referrals, source: :user
并且在 UserReferral 中:
belongs_to :user
has_many :users, primary_key: 'reffered_user_id', class_name: 'User'
我尝试了各种关联组合,如有任何帮助,我们将不胜感激。我读过其他几个答案,但它们都涉及第三个连接 table,我认为我不一定需要。
经过反复试验(并了解关联):
在用户中:
# User whom I referred
has_many :referrals
has_many :converted_users, through: :referrals, :foreign_key => "id", :primary_key => "reffered_user_id", class_name: "User"
# User who referred me
has_one :referral, foreign_key: 'reffered_user_id'
has_one :referrer, through: :referral, source: :user
在推荐中:
belongs_to :user
has_one :converted_user, primary_key: "reffered_user_id", foreign_key: 'id', class_name: 'User'
如果有人有改进,很想知道。如果有更好的答案,我会等几天接受。