Module: ManagedEnum::HasManagedEnum::ClassMethods

Defined in:
lib/managed_enum/has_managed_enum.rb

Instance Method Summary collapse

Instance Method Details

#has_managed_enum(field, possible_keyvalues) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/managed_enum/has_managed_enum.rb', line 10

def has_managed_enum(field, possible_keyvalues)
	if possible_keyvalues.is_a? Array
		possible_keyvalues.each do |possible_keyvalue|
			ManagedEnum::HasManagedEnum.define_instance_methods_for field, possible_keyvalue, possible_keyvalue
			define_singleton_method possible_keyvalue.upcase do
				possible_keyvalue
			end
			scope "#{field}_#{possible_keyvalue}".intern, -> {where(field.intern => possible_keyvalue)}
		end
		define_singleton_method "#{field}_possible_keyvalues" do
			possible_keyvalues
		end
	elsif possible_keyvalues.is_a? Hash
		possible_keyvalues.each do |possible_keyvalue, possible_value|
			ManagedEnum::HasManagedEnum.define_instance_methods_for field, possible_keyvalue, possible_value
			define_singleton_method possible_keyvalue.upcase do
				possible_value
			end
			scope "#{field}_#{possible_keyvalue}".intern, -> {where(field.intern => possible_value)}
		end
		define_singleton_method "#{field}_possible_keyvalues" do
			possible_keyvalues
		end
	end
end