Module: MotionPrime::ModelBaseMixin
- Extended by:
- MotionSupport::Concern
- Included in:
- Model
- Defined in:
- motion-prime/models/_base_mixin.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#assign_attribute(name, value) ⇒ Object
Assigns attribute to model.
-
#assign_attributes(new_attributes, options = {}) ⇒ Hash
Assigns attributes to model.
-
#attributes_hash ⇒ Hash
Hash of all attributes in model.
-
#delete ⇒ Prime::Model
Removed model from default store.
-
#has_attribute?(name) ⇒ Boolean
Check if model has attribute.
-
#inspect ⇒ String
Returns json-formatted representation of model.
-
#model_name ⇒ String
Model class name.
-
#new_record? ⇒ Boolean
Checks if model has been saved in server (have an ID).
-
#persisted? ⇒ Boolean
Checks if model has been saved in server (have an ID).
-
#save ⇒ Prime::Model
Saves model to default store.
- #store ⇒ Object
Class Method Details
.included(base) ⇒ Object
5 6 7 |
# File 'motion-prime/models/_base_mixin.rb', line 5 def self.included(base) base.class_attribute :default_sort_options end |
Instance Method Details
#assign_attribute(name, value) ⇒ Object
Assigns attribute to model
61 62 63 |
# File 'motion-prime/models/_base_mixin.rb', line 61 def assign_attribute(name, value) self.send("#{name}=", value) if has_attribute?(name) end |
#assign_attributes(new_attributes, options = {}) ⇒ Hash
Assigns attributes to model
43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'motion-prime/models/_base_mixin.rb', line 43 def assign_attributes(new_attributes, = {}) attributes = new_attributes.symbolize_keys attributes.each do |k, v| if has_attribute?(k) assign_attribute(k, v) unless [:skip_nil_values] && v.nil? elsif [:validate_attribute_presence] raise(StoreError, "unknown attribute: '#{k}'") else NSLog("unknown attribute: #{k}") end end end |
#attributes_hash ⇒ Hash
Hash of all attributes in model
76 77 78 |
# File 'motion-prime/models/_base_mixin.rb', line 76 def attributes_hash self.info.to_hash.symbolize_keys end |
#delete ⇒ Prime::Model
Removed model from default store.
23 24 25 26 27 28 29 30 |
# File 'motion-prime/models/_base_mixin.rb', line 23 def delete raise StoreError, 'No store provided' unless self.store error_ptr = Pointer.new(:id) self.store.removeObject(self, error: error_ptr) raise StoreError, error_ptr[0].description if error_ptr[0] self end |
#has_attribute?(name) ⇒ Boolean
Check if model has attribute
69 70 71 |
# File 'motion-prime/models/_base_mixin.rb', line 69 def has_attribute?(name) respond_to?("#{name}=") end |
#inspect ⇒ String
Returns json-formatted representation of model
104 105 106 |
# File 'motion-prime/models/_base_mixin.rb', line 104 def inspect "#<#{self.class}:0x#{self.object_id.to_s(16)}> " + MotionPrime::JSON.generate(info) end |
#model_name ⇒ String
Model class name
97 98 99 |
# File 'motion-prime/models/_base_mixin.rb', line 97 def model_name self.class_name_without_kvo.underscore end |
#new_record? ⇒ Boolean
Checks if model has been saved in server (have an ID)
83 84 85 |
# File 'motion-prime/models/_base_mixin.rb', line 83 def new_record? id.blank? end |
#persisted? ⇒ Boolean
Checks if model has been saved in server (have an ID)
90 91 92 |
# File 'motion-prime/models/_base_mixin.rb', line 90 def persisted? !new_record? end |
#save ⇒ Prime::Model
Saves model to default store.
12 13 14 15 16 17 18 |
# File 'motion-prime/models/_base_mixin.rb', line 12 def save raise StoreError, 'No store provided' unless self.store error_ptr = Pointer.new(:id) self.store.addObject(self, error: error_ptr) raise StoreError, error_ptr[0].description if error_ptr[0] self end |
#store ⇒ Object
32 33 34 |
# File 'motion-prime/models/_base_mixin.rb', line 32 def store super || self.class.store end |