Sha256: 8848a3d9f7d36b29fe86ec4ab99a2036619ef99d9403aa2ec24375ebd8555b40
Contents?: true
Size: 1.16 KB
Versions: 2
Compression:
Stored size: 1.16 KB
Contents
# frozen_string_literal: true require "enumish/version" require "active_support" module Enumish extend ActiveSupport::Concern module ClassMethods def method_missing(method_id, *args, &block) if !method_id.to_s.match(/\?$/) && enum_ids.include?(method_id.to_s) obj = self.where(enum_id => method_id.to_s).first return obj if obj.present? end super method_id, *args, &block end def enum_id :short end def refresh_enum_ids! Mutex.new.synchronize do @enum_ids = self.pluck(enum_id) end end def enum_ids refresh_enum_ids! if @enum_ids.blank? @enum_ids end end # Allow calls such as object.friendly? or model.attitude.friendly? def method_missing(method_id, *args, &block) bare_method = if method_id.to_s.match(/\?$/) && args.empty? && block.nil? method_id.to_s.sub(/\?$/, "") end if bare_method && self.class.enum_ids.include?(bare_method) self.send(self.class.enum_id.to_s) == bare_method else super end end def to_s self.send(self.class.enum_id).to_s end def to_sym self.send(self.class.enum_id).to_sym end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
enumish-0.9.2 | lib/enumish.rb |
enumish-0.9.1 | lib/enumish.rb |