Sha256: 44b93de7cff0910f35844667b8a096756e14d97d2df3b1fdeeb545bcb4c8332a

Contents?: true

Size: 1.38 KB

Versions: 2

Compression:

Stored size: 1.38 KB

Contents

require "concerned_inheritance"
require 'active_support/core_ext/object'
require 'active_support/core_ext/hash'
require 'active_support/dependencies/autoload'
require 'active_support/core_ext/hash/indifferent_access'
require 'active_model'

class MemoryModel::Base
  extend ActiveSupport::Autoload
  extend ConcernedInheritance

  autoload :Fieldable
  autoload :Collectable
  autoload :Comparable
  autoload :Actionable
  autoload :Attributable
  autoload :Versionable
  autoload :Persistence

  # Active Model Additions
  extend ActiveModel::Callbacks
  extend ActiveModel::Naming
  extend ActiveModel::Translation
  include ActiveModel::Conversion
  include ActiveModel::MassAssignmentSecurity
  include ActiveModel::Observing
  include ActiveModel::Serialization
  include ActiveModel::Validations

  # Memory Model Additions
  include Fieldable
  include Collectable
  include Comparable
  include Actionable
  include Attributable
  include Versionable
  include Persistence

  # Active Model Callbacks
  define_model_callbacks :initialize, only: [:after]

  def initialize(attributes={ })
    unless self.class.collection.is_a? MemoryModel::Collection
      raise MemoryModel::InvalidCollectionError, "#{self.class} does not have an assigned collection"
    end
    @attributes = fields.default_values(self, attributes).with_indifferent_access
    @deleted    = false
    run_callbacks :initialize
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
memory_model-0.0.2 lib/memory_model/base.rb
memory_model-0.0.1 lib/memory_model/base.rb