Sha256: e7c0106ea6768a2ca82d9b348ced2eddcf95484675d011d60abe801b20e79bbb
Contents?: true
Size: 924 Bytes
Versions: 1
Compression:
Stored size: 924 Bytes
Contents
module Petergate module ActiveRecord module Base def self.included(base) base.extend(ClassMethods) end module ClassMethods def petergate(options = {roles: [:admin]}) serialize :roles after_initialize do self[:roles] ||= [] end instance_eval do const_set('ROLES', options[:roles]) end class_eval do def available_roles self.class::ROLES end def roles=(v) self[:roles] = Array(v).map(&:to_sym).to_a.select{|r| r.size > 0 && available_roles.include?(r)} end def roles self[:roles] + [:user] end def role roles.first end end end end end end end class ActiveRecord::Base include Petergate::ActiveRecord::Base end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
petergate-1.1.8 | lib/petergate/active_record/base.rb |