Sha256: 0c0f3567ff34e0851789214dafb56a6bd9a2238488c3b286d887e06f35e2435a
Contents?: true
Size: 1.27 KB
Versions: 1
Compression:
Stored size: 1.27 KB
Contents
module Clubhouse module Concerns module Models module Organization extend ActiveSupport::Concern include Emailable NAME_REGEX = /\A[a-z][a-z\d\-]*\z/ included do has_many :invitations has_many :memberships has_many :members, through: :memberships, class_name: Clubhouse.config.member_model before_validation :normalize_name validates :name, presence: true, length: { maximum: 30 }, format: NAME_REGEX, uniqueness: true end module ClassMethods def locate(id_or_name) located(id_or_name).first end def locate!(id_or_name) located(id_or_name).first! end def located(id_or_name) field = Clubhouse.is_id?(id_or_name) ? :id : :name where(field => id_or_name) end end def member?(member) memberships.exists?(member: member) end def admin?(member) memberships.exists?(admin: true, member: member) end private def normalize_name self.name = Clubhouse.normalize_name(name) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
clubhouse-0.1.0 | lib/clubhouse/concerns/models/organization.rb |