module Disposable::Twin::Setup
Read all properties at twin initialization time from model. Simply pass through all properties from the model to the respective twin writer method. This will result in all twin properties/collection items being twinned, and collections being Collection
to expose the desired public API.
Public Class Methods
new(model, options={})
click to toggle source
# File lib/disposable/twin/setup.rb, line 8 def initialize(model, options={}) @fields = {} @model = model @mapper = mapper_for(model) # mapper for model. setup_properties!(options) end
Private Instance Methods
mapper_for(model)
click to toggle source
# File lib/disposable/twin/setup.rb, line 17 def mapper_for(model) model end
read_value_for(dfn, options)
click to toggle source
# File lib/disposable/twin/setup.rb, line 44 def read_value_for(dfn, options) mapper.send(dfn[:name]) # model.title. end
setup_properties!(options)
click to toggle source
# File lib/disposable/twin/setup.rb, line 21 def setup_properties!(options) schema.each { |dfn| setup_property!(dfn, options) } end
setup_property!(dfn, options)
click to toggle source
# File lib/disposable/twin/setup.rb, line 25 def setup_property!(dfn, options) if options.has_key?(dfn[:name].to_sym) value = options[dfn[:name].to_sym] return setup_write!(dfn, value) end value = setup_value_for(dfn, options) # this sucks and is why i introduce pipetrees in 0.4. return if dfn[:readable] == false && dfn[:default].nil? setup_write!(dfn, value) # note: even readable: false will be written to twin as nil. end
setup_value_for(dfn, options)
click to toggle source
# File lib/disposable/twin/setup.rb, line 39 def setup_value_for(dfn, options) # overridden by Default. return if dfn[:readable] == false read_value_for(dfn, options) end
setup_write!(dfn, value)
click to toggle source
# File lib/disposable/twin/setup.rb, line 48 def setup_write!(dfn, value) # send(dfn.setter, value) send("#{dfn[:name]}=", value) # FIXME! end