Skip to content

Instantly share code, notes, and snippets.

@npassaro
Last active May 1, 2020 14:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save npassaro/4bec46845c7170e54ece14b93475ca5d to your computer and use it in GitHub Desktop.
Save npassaro/4bec46845c7170e54ece14b93475ca5d to your computer and use it in GitHub Desktop.
Models
class BadCompanion < Green
has_many :companionships, as: :companion
has_many :greens, through: :companionships
end
class Companionship < ApplicationRecord
belongs_to :green
belongs_to :companion, polymorphic: true
end
class GoodCompanion < Green
has_many :companionships, as: :companion
has_many :greens, through: :companionships
end
class Green < ApplicationRecord
has_many :companionships
has_many :bad_companions, through: :companionships, source: :companion, source_type: 'BadCompanion'
has_many :good_companions, through: :companionships, source: :companion, source_type: 'GoodCompanion'
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment