Module: RailsUtils::ActiveRecord::BaseExtensions

Defined in:
lib/rails_utils/ordinal.rb

Instance Method Summary collapse

Instance Method Details

#ordinal_field(field_name, options = {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/rails_utils/ordinal.rb', line 28

def ordinal_field(field_name, options = {})
  define_method "#{field_name}" do
    s = instance_variable_get "@#{field_name}_status"
    if s.nil?
      s = OrdinalValue.new options[:values], (self[field_name] || options[:default])
      instance_variable_set "@#{field_name}_status", s
    end
    s
  end

  define_method "#{field_name}=" do |value|
    s = self.send(field_name)
    s.set value
    self[field_name] = s.to_s
    s
  end
end

#ordinal_fields(*args) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/rails_utils/ordinal.rb', line 46

def ordinal_fields(*args)
  options = (Hash === args[-1]) ? args.pop : {}
  
  args.each do |field_name|
    ordinal_field field_name, options
  end
end