Home > Enterprise >  Rails referral model with self referential association
Rails referral model with self referential association

Time:12-16

I'm trying to create a Referral program on a Rails app and I struggle with the relationships.

My Referral model is pretty simple : godfather_id, godson_id, state Both godfather and godson ids references an User, which can have many godsons but only one godfather.

class Referral < ApplicationRecord
  belongs_to :user
  belongs_to :godson, class_name: 'User'
end

The issue comes in my User model. I wan't to be able to do user.godsons to get an array of godsons Users and user.godfather to get the godfather User.

I tried a few things and I think those two where the closest to what I need to do (User model simplified for the example).

class User < ApplicationRecord
  has_many :referrals
  has_many :godson, -> { where(godfather_id: id) }, through: :referrals
  has_one :godfather, -> { where(godson_id: id) }, through: :referrals
end
class User < ApplicationRecord
  has_many :godson_relations, class_name: 'Referral', foreign_key: 'godson_id'
  has_many :godsons, through: :godson_relations
  has_one :godfather_relation, class_name: 'Referral', foreign_key: 'godfather_id'
  has_one :godfather, through: :godfather_relations
end

I'm really unsure about how to materialize this relationship, any help will be appreciated

  • Related