Module: Modelish::PropertyTranslations::ClassMethods

Defined in:
lib/modelish/property_translations.rb

Overview

Methods for managing a dictionary of property translations

Instance Method Summary collapse

Instance Method Details

#add_property_translation(from_name, to_name) ⇒ Object

Adds a property translation to the model. This maps a mutator name to an existing property, so that whenever the from_name mutator is called on the model, the to_name property receives the value. If subsequent method calls add more destinations for the same source from_name, all destination properties will be updated.

Examples:

A one-to-one property translation

class MyClass
  include Modelish::PropertyTranslations

  attr_accessor :foo

  add_property_translation(:camelFoo, :foo)
end

model = MyClass.new
model.camelFoo = 'some value'
model.foo
# => "some value"

A one-to-many property translation

class
  include ModelisH::PropertyTranslations

  attr_accessor :foo, :bar

  add_property_translation(:source, :foo)
  add_property_translation(:source, :bar)
end

model = MyClass.new(:source => 'some value')
model.foo
# => "some value"
model.bar
# => "some value"

model.foo = 'some other value'
model.foo
# => "some other value"
model.bar
# => "some value"

model.source = 'new value'
model.foo
# => "new value"
model.bar
# => "new value"

Parameters:

  • from_name (Symbol, String)

    the name of the source property

  • to_name (Symbol, String)

    the name of the destination property



63
64
65
66
67
68
69
70
# File 'lib/modelish/property_translations.rb', line 63

def add_property_translation(from_name, to_name)
  source = from_name.to_sym
  target = to_name.to_sym

  translations[source] ||= []
  translations[source] << target
  define_writer_with_translations(source)
end

#translationsHash<Symbol,Array>

A map of the configured property translations, keyed on from_name

Returns:

  • (Hash<Symbol,Array>)

    key is from_name, value is list of to_names



75
76
77
# File 'lib/modelish/property_translations.rb', line 75

def translations
  @translations ||= {}
end