Module: MultipartDate::ClassMethods

Defined in:
lib/flex_date_rails.rb

Instance Method Summary collapse

Instance Method Details

#multipart_date(*attrs) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/flex_date_rails.rb', line 13

def multipart_date(*attrs)
  attrs.map{ |a| a.to_s }.each do |attr|
    define_method attr do
      y, m, d = %w(y m d).map{ |i| read_attribute(attr + "_" + i) }
      FlexDate.new(y, m, d)
    end
    define_method(attr + '?') do
      %w(y m d).map{ |i| read_attribute(attr + "_" + i) }.compact.size > 0
    end
    define_method("#{attr}=") do |str|
      date = FlexDate.parse(str)
      write_attribute("#{attr}_y", date.year)
      write_attribute("#{attr}_m", date.month)
      write_attribute("#{attr}_d", date.day)
    end
  end
end