Files
nairobi/app/models/concerns/relationable.rb

24 lines
717 B
Ruby

module Relationable
extend ActiveSupport::Concern
included do
has_many :related_contents, as: :parent_relationable, dependent: :destroy
end
def relate_content(relationable)
RelatedContent.find_or_create_by(parent_relationable: self, child_relationable: relationable)
end
def relationed_contents
related_contents.not_hidden.map { |related_content| related_content.child_relationable }
end
def report_related_content(relationable)
related_content = related_contents.find_by(child_relationable: relationable)
if related_content.present?
related_content.increment!(:times_reported)
related_content.opposite_related_content.increment!(:times_reported)
end
end
end