diff --git a/has_enum.gemspec b/has_enum.gemspec index 863747e..8ced5b4 100644 --- a/has_enum.gemspec +++ b/has_enum.gemspec @@ -23,3 +23,4 @@ Gem::Specification.new do |s| s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } s.require_paths = ["lib"] end + diff --git a/lib/has_enum.rb b/lib/has_enum.rb index f946829..6764ed1 100644 --- a/lib/has_enum.rb +++ b/lib/has_enum.rb @@ -3,9 +3,6 @@ module HasEnum autoload :ClassMethods, 'has_enum/class_methods' def self.included(base) - base.class_attribute :enums - base.enums ||= HashWithIndifferentAccess.new - base.extend ClassMethods end diff --git a/lib/has_enum/class_methods.rb b/lib/has_enum/class_methods.rb index 7cc03a4..21fcbaa 100644 --- a/lib/has_enum/class_methods.rb +++ b/lib/has_enum/class_methods.rb @@ -1,10 +1,12 @@ module HasEnum::ClassMethods def enum_values(attribute) + return nil unless defined?(enums) enums[attribute] end def has_enum?(enum) + return false unless defined?(enums) enums.include? enum end @@ -25,6 +27,13 @@ def has_enums end def has_enum(*params) + self.class_eval do + unless defined?(self.enums) + self.class_attribute :enums + end + self.enums ||= HashWithIndifferentAccess.new + end + options = params.extract_options! options.assert_valid_keys(:query_methods, :scopes, :presence, :multiple, :validates)