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 ⇒ 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
62 63 64 |
# File 'motion-prime/models/_base_mixin.rb', line 62 def assign_attribute(name, value) self.send("#{name}=", value) if has_attribute?(name) end |
#assign_attributes(new_attributes, options = {}) ⇒ Hash
Assigns attributes to model
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'motion-prime/models/_base_mixin.rb', line 44 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
77 78 79 |
# File 'motion-prime/models/_base_mixin.rb', line 77 def attributes_hash self.info.to_hash.symbolize_keys end |
#clone ⇒ Object
Returns a clone of the record with empty bags
115 116 117 |
# File 'motion-prime/models/_base_mixin.rb', line 115 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.
24 25 26 27 28 29 30 31 |
# File 'motion-prime/models/_base_mixin.rb', line 24 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
70 71 72 |
# File 'motion-prime/models/_base_mixin.rb', line 70 def has_attribute?(name) respond_to?("#{name}=") end |
#inspect ⇒ String
Returns json-formatted representation of model
105 106 107 108 109 110 |
# File 'motion-prime/models/_base_mixin.rb', line 105 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
98 99 100 |
# File 'motion-prime/models/_base_mixin.rb', line 98 def model_name self.class_name_without_kvo.underscore end |
#new_record? ⇒ Boolean
Checks if model has been saved in server (have an ID)
84 85 86 |
# File 'motion-prime/models/_base_mixin.rb', line 84 def new_record? id.blank? end |
#persisted? ⇒ Boolean
Checks if model has been saved in server (have an ID)
91 92 93 |
# File 'motion-prime/models/_base_mixin.rb', line 91 def persisted? !new_record? end |
#save ⇒ Prime::Model
Saves model to default store.
12 13 14 15 16 17 18 19 |
# File 'motion-prime/models/_base_mixin.rb', line 12 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
33 34 35 |
# File 'motion-prime/models/_base_mixin.rb', line 33 def store super || self.class.store end |