12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/adva/has_options.rb', line 12
def has_option(*names)
definition = names.
names.each do |name|
self.option_definitions[name] = definition.reverse_update(:default => nil, :type => :text_field)
class_eval " def \#{name}\n \#{name}_before_type_cast\n end\n\n def \#{name}_before_type_cast\n self.options ||= {}\n options.key?(:\#{name}) ? options[:\#{name}] : self.class.option_definition(:\#{name}, :default)\n end\n\n def \#{name}=(value)\n options_will_change!\n if self.class.option_definition(:\#{name}, :type) == :boolean\n value = ActiveRecord::Type::Boolean.new.cast(value)\n end\n self.options ||= {}\n options[:\#{name}] = value\n end\n src\n end\n\n def option_definition(name, key)\n option_definitions[name][key]\n rescue\n superclass.option_definition(name, key) unless self.class.superclass == ActiveRecord::Base\n end\nend\n", __FILE__, __LINE__
|