Module: Hoardable::Model
- Extended by:
- ActiveSupport::Concern
- Included in:
- EncryptedRichText, RichText
- Defined in:
- lib/hoardable/model.rb
Overview
This concern is the main entrypoint for using Hoardable. When included into an ActiveRecord
class, it dynamically generates the Version
variant of that class (with VersionModel) and includes the Hoardable API methods and relationships on the source model class (through SourceModel).
Class Method Summary collapse
Class Method Details
.included(base) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/hoardable/model.rb', line 58 def self.included(base) TracePoint .new(:end) do |trace| next unless base == trace.self full_version_class_name = "#{base.name}#{VERSION_CLASS_SUFFIX}" if (namespace_match = full_version_class_name.match(/(.*)::(.*)/)) object_namespace = namespace_match[1].constantize version_class_name = namespace_match[2] else object_namespace = Object version_class_name = full_version_class_name end unless Object.const_defined?(full_version_class_name) object_namespace.const_set(version_class_name, Class.new(base) { include VersionModel }) end base.class_eval { include SourceModel } REGISTRY.add(base) trace.disable end .enable end |