followable.rb 434 Bytes
module Followable
  extend ActiveSupport::Concern

  def followers
    person_followers = Person.joins(:owned_circles).merge(circles).uniq
    external_person_followers = ExternalPerson.joins(:owned_circles).merge(circles).uniq

    person_followers + external_person_followers
  end

  def followed_by?(person)
    (person == self) || (person.in? self.followers)
  end

  def in_circle?(circle)
    circle.in? self.circles
  end
end