module Followable extend ActiveSupport::Concern included do has_many :follows, as: :followable, inverse_of: :followable, dependent: :destroy has_many :followers, through: :follows, source: :user scope :followed_by_user, ->(user) { joins(:follows).where(follows: { user_id: user.id }) } end def followed_by?(user) followers.include?(user) end end