Class: PaperTrailDiff::PreparedRecordState
- Inherits:
-
Object
- Object
- PaperTrailDiff::PreparedRecordState
- Defined in:
- lib/paper_trail_diff/prepared_record_index.rb,
sig/generated/paper_trail_diff/prepared_record_index.rbs
Overview
Immutable scalar state from a PaperTrail version or live-record fallback.
Instance Attribute Summary collapse
- #attributes ⇒ Hash[untyped, untyped] readonly
- #model_class ⇒ Object readonly
Class Method Summary collapse
-
.from_attributes(model_class, attributes) ⇒ PreparedRecordState
: (untyped, Hash[untyped, untyped]) -> PreparedRecordState.
Instance Method Summary collapse
-
#initialize(record) ⇒ PreparedRecordState
constructor
: (untyped) -> void.
-
#initialize_attributes(model_class, attributes) ⇒ void
: (untyped, Hash[untyped, untyped]) -> void.
-
#instantiate ⇒ Object
Mirrors PaperTrail's reifier, which writes attributes directly.
Constructor Details
#initialize(record) ⇒ PreparedRecordState
: (untyped) -> void
11 12 13 14 15 |
# File 'lib/paper_trail_diff/prepared_record_index.rb', line 11 def initialize(record) @model_class = record.class @attributes = Support.immutable_copy(record.attributes) freeze end |
Instance Attribute Details
#attributes ⇒ Hash[untyped, untyped] (readonly)
8 9 10 |
# File 'lib/paper_trail_diff/prepared_record_index.rb', line 8 def attributes @attributes end |
#model_class ⇒ Object (readonly)
7 8 9 |
# File 'lib/paper_trail_diff/prepared_record_index.rb', line 7 def model_class @model_class end |
Class Method Details
.from_attributes(model_class, attributes) ⇒ PreparedRecordState
: (untyped, Hash[untyped, untyped]) -> PreparedRecordState
18 19 20 21 22 |
# File 'lib/paper_trail_diff/prepared_record_index.rb', line 18 def self.from_attributes(model_class, attributes) state = allocate state.send(:initialize_attributes, model_class, attributes) state end |
Instance Method Details
#initialize_attributes(model_class, attributes) ⇒ void
This method returns an undefined value.
: (untyped, Hash[untyped, untyped]) -> void
37 38 39 40 41 |
# File 'lib/paper_trail_diff/prepared_record_index.rb', line 37 def initialize_attributes(model_class, attributes) @model_class = model_class @attributes = Support.immutable_copy(attributes) freeze end |
#instantiate ⇒ Object
Mirrors PaperTrail's reifier, which writes attributes directly. Mass assignment would route reconstructed state through application-defined attribute writers and reify a different record than the version stored. : () -> untyped
28 29 30 31 32 |
# File 'lib/paper_trail_diff/prepared_record_index.rb', line 28 def instantiate record = @model_class.new @attributes.each { |name, value| record[name] = value } record end |