11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/symbolic_attribute/concern.rb', line 11
def symbolic_attribute(attr, opts = {})
define_method attr do
val = read_attribute(attr)
val.to_sym unless val.blank?
end
if opts.symbolize_keys!.key?(:values)
class_attr_name = attr.to_s.pluralize
class_attribute class_attr_name, :instance_reader => false, :instance_writer => false
send "#{class_attr_name}=", opts.delete(:values).map(&:to_sym)
validates attr, opts.merge(:inclusion => { :in => proc{|instance| instance.class.send(class_attr_name)} })
end
end
|