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
|