jclem/active_record_rollout

View on GitHub
app/models/detour/database_group_flag.rb

Summary

Maintainability
A
0 mins
Test Coverage
class Detour::DatabaseGroupFlag < Detour::Flag
  include Detour::Concerns::Keepable

  validates_presence_of   :group_id
  validates_presence_of   :flaggable_type
  validates_uniqueness_of :feature_id, scope: :group_id

  attr_accessible :group_id

  belongs_to :group
  has_many   :memberships, through: :group

  def members
    flaggable_class.joins(%Q{INNER JOIN "detour_memberships" ON "#{flaggable_class.table_name}"."id" = "detour_memberships"."member_id"}).where(detour_memberships: { group_id: group.id })
  end

  def group_name
    group.name
  end

  def group_type
    "database"
  end

  private

  def flaggable_class
    flaggable_type.constantize
  end
end