Sha256: 8d57cda7af4d51a4080bc1c29cea297a8ebd2885565377126cdc9c25e0d90d12

Contents?: true

Size: 915 Bytes

Versions: 1

Compression:

Stored size: 915 Bytes

Contents

# frozen_string_literal: true

require_relative "model/access"

module Solid::Model
  extend ::ActiveSupport::Concern

  module ClassMethods
    def [](...)
      new(...)
    end

    def inherited(subclass)
      subclass.include(::Solid::Model)
    end
  end

  included do
    include ::ActiveModel.const_defined?(:Api, false) ? ::ActiveModel::Api : ::ActiveModel::Model
    include ::ActiveModel.const_defined?(:Access, false) ? ::ActiveModel::Access : ::Solid::Model::Access

    include ::ActiveModel::Attributes
    include ::ActiveModel::Dirty
    include ::ActiveModel::Validations::Callbacks

    extend ActiveModel::Callbacks

    define_model_callbacks :initialize, only: :after
  end

  def initialize(...)
    super

    run_callbacks(:initialize)
  end

  def inspect
    "#<#{self.class.name} #{attributes.map { |k, v| "#{k}=#{v.inspect}" }.join(" ")}>"
  end

  alias_method :[], :public_send
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solid-process-0.4.0 lib/solid/model.rb