Module: ActsAsDuration::Base::ClassMethods

Defined in:
lib/acts_as_duration/base.rb

Instance Method Summary collapse

Instance Method Details

#acts_as_duration(*base_attrs, **options) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/acts_as_duration/base.rb', line 10

def acts_as_duration(*base_attrs, **options)
  valid_units = [:seconds, :minutes, :hours, :days, :hhmmss]
  base_attrs.each do |base_attr|
    base_unit = options[:attr_unit] || base_attr[/(#{valid_units.join('|')})/,1].to_sym

    (valid_units - [base_unit]).each do |new_unit|
      name = base_attr.to_s.gsub!(base_unit.to_s, new_unit.to_s)
      options_hash = {name: name, base_attr: base_attr, base_unit: base_unit, new_unit: new_unit}
      define_reader_method(options_hash)
      define_writer_method(options_hash) unless options[:read_only]         
    end
  end
end