Module: CoercedAccessor::Compound

Defined in:
lib/coerced_accessor/compound.rb

Instance Method Summary collapse

Instance Method Details

#compound_accessor(accessor, *attributes) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/coerced_accessor/compound.rb', line 3

def compound_accessor(accessor, *attributes)
  options = attributes.extract_options!
  delimiter = options.delete(:delimiter) || ':'

  define_method accessor do
    attributes.map { |a| send(a) }.join(delimiter)
  end

  define_method "#{accessor}=" do |value|
    values = value.split(delimiter)
    attributes.map { |a| send("#{a}=", values.shift) }
  end
end