Module: CoercedAccessor::Split

Defined in:
lib/coerced_accessor/split.rb

Instance Method Summary collapse

Instance Method Details

#split_accessors(attribute, *accessors) ⇒ Object



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

def split_accessors(attribute, *accessors)
  options = accessors.extract_options!
  delimiter = options.delete(:delimiter) || ':'

  accessors.each.with_index do |accessor, index|
    define_method accessor do
      send(attribute).to_s.split(delimiter)[index]
    end

    define_method "#{accessor}=" do |value|
      values = accessors.map { |a| send(a) }
      values[index] = value
      send("#{attribute}=", values.join(delimiter))
    end
  end
end