module MiniStrava::Model::ClassMethods
Public Instance Methods
build(attributes)
click to toggle source
# File lib/mini_strava/model.rb, line 17 def build attributes object = self.new model_attributes.each do |attr| object.send "#{attr[:name]}=", attributes[attr[:name]] end object end
define_model_att_reader(name)
click to toggle source
# File lib/mini_strava/model.rb, line 39 def define_model_att_reader name define_method name do attributes[name] end end
define_model_att_writer(name, type, default)
click to toggle source
# File lib/mini_strava/model.rb, line 45 def define_model_att_writer name, type, default define_method "#{name}=" do |value| value = default if value.nil? if type != DefaultAttrType klass = Models.const_get type.to_s value = if value.is_a? Array value.collect do |v| klass.build v || {} end else klass.build value || {} end end attributes[name] = value end end
model_attr(name, type: DefaultAttrType, default: nil)
click to toggle source
# File lib/mini_strava/model.rb, line 29 def model_attr name, type: DefaultAttrType, default: nil model_attributes << { name: name.to_s, type: type, default: default } define_model_att_reader name define_model_att_writer name, type, default end
model_attributes()
click to toggle source
# File lib/mini_strava/model.rb, line 25 def model_attributes @model_attributes ||= [] end