Sha256: c4dd23a72f901b05a12306e96f1d8d6b0227056f5187c875738a8d04a57434b1
Contents?: true
Size: 1.46 KB
Versions: 1
Compression:
Stored size: 1.46 KB
Contents
# frozen_string_literal: true module Upgrow # Models are objects that represent core entities of the app’s business logic. # These are usually persisted and can be fetched and created as needed. They # have unique keys for identification (usually a numeric value), and, most # importantly perhaps, they are immutable. This is the key difference between # this new Model layer of objects and the Active Record instances regularly # referred to as models in typical Rails default apps. # # Another difference between Models and Records is that, once instantiated, # Models simply hold its attributes immutably, and they don’t have any # capabilities to create or update any information in the persistence layer. # # The collaboration between Repositories and Models is what allows Active # Record to be completely hidden away from any other areas of the app. There # are no references to Records in controllers, views, and anywhere else. # Repositories are invoked instead, which in turn return read-only Models. class Model < ImmutableObject attribute :id attribute :created_at attribute :updated_at # Initializes a new Model with the given member values. # # @param args [Hash<Symbol, Object>] the list of values for each attribute. # # @raise [KeyError] if an attribute is missing in the list of arguments. def initialize(**args) self.class.attribute_names.each { |key| args.fetch(key) } super end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
upgrow-0.0.2 | lib/upgrow/model.rb |