Module: MiniStrava::Model::ClassMethods
- Defined in:
- lib/mini_strava/model.rb
Instance Method Summary collapse
- #build(attributes) ⇒ Object
- #define_model_att_reader(name) ⇒ Object
- #define_model_att_writer(name, type, default) ⇒ Object
- #model_attr(name, type: DefaultAttrType, default: nil) ⇒ Object
- #model_attributes ⇒ Object
Instance Method Details
#build(attributes) ⇒ Object
17 18 19 20 21 22 23 |
# 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) ⇒ Object
39 40 41 42 43 |
# 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) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# 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) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# 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 ⇒ Object
25 26 27 |
# File 'lib/mini_strava/model.rb', line 25 def model_attributes @model_attributes ||= [] end |