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.
-
#clone ⇒ Object
Returns a clone of the record with empty bags.
-
#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 ⇒ Object
-
#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
66 67 68 |
# File 'motion-prime/models/_base_mixin.rb', line 66 def assign_attribute(name, value) self.send("#{name}=", value) if has_attribute?(name) end |
#assign_attributes(new_attributes, options = {}) ⇒ Hash
Assigns attributes to model
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'motion-prime/models/_base_mixin.rb', line 48 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 Prime.logger.info("unknown attribute: #{k}") end end end |
#attributes_hash ⇒ Hash
Hash of all attributes in model
81 82 83 |
# File 'motion-prime/models/_base_mixin.rb', line 81 def attributes_hash self.info.to_hash.symbolize_keys end |
#clone ⇒ Object
Returns a clone of the record with empty bags
119 120 121 |
# File 'motion-prime/models/_base_mixin.rb', line 119 def clone self.class.new(self.info.select { |key, value| !key.to_s.ends_with?('_bag') }) end |
#delete ⇒ Prime::Model
Removed model from default store.
28 29 30 31 32 33 34 35 |
# File 'motion-prime/models/_base_mixin.rb', line 28 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
74 75 76 |
# File 'motion-prime/models/_base_mixin.rb', line 74 def has_attribute?(name) respond_to?("#{name}=") end |
#inspect ⇒ String
Returns json-formatted representation of model
109 110 111 112 113 114 |
# File 'motion-prime/models/_base_mixin.rb', line 109 def inspect inspection = self.info.keys.map { |name| "#{name}: #{attribute_for_inspect(name)}" }.compact.join(", ") "#<#{self.class}:0x#{self.object_id.to_s(16)} #{inspection}>" end |
#model_name ⇒ String
Model class name
102 103 104 |
# File 'motion-prime/models/_base_mixin.rb', line 102 def model_name self.class_name_without_kvo.underscore end |
#new_record? ⇒ Boolean
Checks if model has been saved in server (have an ID)
88 89 90 |
# File 'motion-prime/models/_base_mixin.rb', line 88 def new_record? id.blank? end |
#persisted? ⇒ Boolean
Checks if model has been saved in server (have an ID)
95 96 97 |
# File 'motion-prime/models/_base_mixin.rb', line 95 def persisted? !new_record? end |
#save ⇒ Object
9 10 11 |
# File 'motion-prime/models/_base_mixin.rb', line 9 def save self.performSelectorOnMainThread :save!, withObject: nil, waitUntilDone: true end |
#save! ⇒ Prime::Model
Saves model to default store.
16 17 18 19 20 21 22 23 |
# File 'motion-prime/models/_base_mixin.rb', line 16 def save! set_default_id_if_needed 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
37 38 39 |
# File 'motion-prime/models/_base_mixin.rb', line 37 def store super || self.class.store end |