Module: Trax::Model

Extended by:
ActiveSupport::Autoload, ActiveSupport::Concern
Includes:
ActiveModel::Dirty, Core::InheritanceHooks, Matchable
Defined in:
lib/trax/model.rb,
lib/trax/model/mti.rb,
lib/trax/model/sti.rb,
lib/trax/model/enum.rb,
lib/trax/model/uuid.rb,
lib/trax/model/mixin.rb,
lib/trax/model/errors.rb,
lib/trax/model/mixins.rb,
lib/trax/model/scopes.rb,
lib/trax/model/struct.rb,
lib/trax/model/railtie.rb,
lib/trax/model/registry.rb,
lib/trax/model/freezable.rb,
lib/trax/model/matchable.rb,
lib/trax/model/unique_id.rb,
lib/trax/model/attributes.rb,
lib/trax/model/mti/entity.rb,
lib/trax/model/restorable.rb,
lib/trax/model/uuid_array.rb,
lib/trax/model/uuid_prefix.rb,
lib/trax/model/mti/abstract.rb,
lib/trax/model/mti/namespace.rb,
lib/trax/model/sti/attributes.rb,
lib/trax/model/attributes/type.rb,
lib/trax/model/attributes/mixin.rb,
lib/trax/model/attributes/types.rb,
lib/trax/model/attributes/value.rb,
lib/trax/model/mixins/id_scopes.rb,
lib/trax/model/attributes/errors.rb,
lib/trax/model/attributes/fields.rb,
lib/trax/model/mixins/field_scopes.rb,
lib/trax/model/attributes/attribute.rb,
lib/trax/model/attributes/types/enum.rb,
lib/trax/model/attributes/types/json.rb,
lib/trax/model/mixins/sort_by_scopes.rb,
lib/trax/model/attributes/definitions.rb,
lib/trax/model/attributes/types/array.rb,
lib/trax/model/attributes/types/string.rb,
lib/trax/model/attributes/types/boolean.rb,
lib/trax/model/attributes/types/integer.rb,
lib/trax/model/attributes/types/uuid_array.rb

Defined Under Namespace

Modules: Attributes, ClassMethods, Enum, Errors, Freezable, MTI, Matchable, Mixin, Mixins, Restorable, STI, Scopes, UniqueId Classes: Railtie, Registry, Struct, UUID, UUIDArray, UUIDPrefix

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.mixin_registryObject

Returns the value of attribute mixin_registry.



62
63
64
# File 'lib/trax/model.rb', line 62

def mixin_registry
  @mixin_registry
end

Class Method Details

.eager_autoload_mixins!Object



78
79
80
81
82
83
84
85
86
87
# File 'lib/trax/model.rb', line 78

def self.eager_autoload_mixins!
  ::Trax::Model::Attributes::Mixin
  ::Trax::Model::Enum
  ::Trax::Model::Freezable
  ::Trax::Model::Restorable
  ::Trax::Model::UniqueId
  ::Trax::Model::Mixins::FieldScopes
  ::Trax::Model::Mixins::IdScopes
  ::Trax::Model::Mixins::SortByScopes
end

.find_by_uuid(uuid) ⇒ Object



91
92
93
# File 'lib/trax/model.rb', line 91

def self.find_by_uuid(uuid)
  ::Trax::Model::UUID.new(uuid).record
end

.register_mixin(mixin_klass, key = nil) ⇒ Object



67
68
69
70
71
72
# File 'lib/trax/model.rb', line 67

def self.register_mixin(mixin_klass, key = nil)
  mixin_key = mixin_klass.respond_to?(:mixin_registry_key) ? mixin_klass.mixin_registry_key : (key || mixin_klass.name.demodulize.underscore.to_sym)

  return if mixin_registry.key?(mixin_key)
  mixin_registry[mixin_key] = mixin_klass
end

.rootObject



74
75
76
# File 'lib/trax/model.rb', line 74

def self.root
  ::Pathname.new(::File.path(__FILE__))
end

Instance Method Details

#reverse_assign_attributes(attributes_hash) ⇒ Object

like reverse merge, only assigns attributes which have not yet been assigned



55
56
57
58
59
# File 'lib/trax/model.rb', line 55

def reverse_assign_attributes(attributes_hash)
  attributes_to_assign = attributes_hash.keys.reject{|_attribute_name| attribute_present?(_attribute_name) }

  assign_attributes(attributes_hash.slice(attributes_to_assign))
end