Class: JSONORM::BaseModel
- Inherits:
-
Object
- Object
- JSONORM::BaseModel
- Includes:
- Validations
- Defined in:
- lib/json-orm/base_model.rb
Class Attribute Summary collapse
-
.attributes_list ⇒ Object
Returns the value of attribute attributes_list.
-
.orm_instance ⇒ Object
Returns the value of attribute orm_instance.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(attributes = {}, orm_instance:) ⇒ BaseModel
constructor
A new instance of BaseModel.
- #save ⇒ Object
Methods included from Validations
Constructor Details
#initialize(attributes = {}, orm_instance:) ⇒ BaseModel
Returns a new instance of BaseModel.
27 28 29 30 31 32 33 34 35 |
# File 'lib/json-orm/base_model.rb', line 27 def initialize(attributes = {}, orm_instance:) raise 'ORM instance is required' unless orm_instance self.class.orm_instance = orm_instance @orm_instance = orm_instance attributes.each do |attr, value| send("#{attr}=", value) if self.class.attributes_list.include?(attr.to_sym) end end |
Class Attribute Details
.attributes_list ⇒ Object
Returns the value of attribute attributes_list.
9 10 11 |
# File 'lib/json-orm/base_model.rb', line 9 def attributes_list @attributes_list end |
.orm_instance ⇒ Object
Returns the value of attribute orm_instance.
9 10 11 |
# File 'lib/json-orm/base_model.rb', line 9 def orm_instance @orm_instance end |
Class Method Details
.attributes(*names) ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/json-orm/base_model.rb', line 11 def attributes(*names) @attributes_list ||= [] names.each do |name| attr_accessor name unless method_defined?(name) @attributes_list << name unless @attributes_list.include?(name) end attr_accessor :id unless method_defined?(:id) @attributes_list << :id unless @attributes_list.include?(:id) end |
.inherited(subclass) ⇒ Object
22 23 24 25 |
# File 'lib/json-orm/base_model.rb', line 22 def self.inherited(subclass) subclass.attributes_list = [] subclass.orm_instance = nil end |
Instance Method Details
#save ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/json-orm/base_model.rb', line 37 def save validate! data = self.class.attributes_list.each_with_object({}) do |attr, hash| hash[attr] = send(attr) end result = if id.nil? || id.to_s.empty? @orm_instance.create(data) else @orm_instance.update(id, data) end self.id = result[:id] if result.is_a?(Hash) && result.key?(:id) true rescue StandardError => e logger.error("Failed to save record for #{self.class.name}, Error: #{e.message}") raise "Failed to save record: #{e.message}" end |