Class: PaperTrail::Human::Core::FieldFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/paper_trail/human/core/field_formatter.rb

Constant Summary collapse

RESOLVER_MAP =
{
  relation: 'PaperTrail::Human::Adapters::Resolvers::Relation',
  enum: 'PaperTrail::Human::Adapters::Resolvers::Enum',
  boolean: 'PaperTrail::Human::Adapters::Resolvers::Boolean',
  custom: 'PaperTrail::Human::Adapters::Resolvers::Custom',
  text: 'PaperTrail::Human::Adapters::Resolvers::Text',
  date: 'PaperTrail::Human::Adapters::Resolvers::Date',
  number: 'PaperTrail::Human::Adapters::Resolvers::Number'
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(model_config, item_type, field_name_resolver: nil, preloaded: nil) ⇒ FieldFormatter

Returns a new instance of FieldFormatter.



17
18
19
20
21
22
# File 'lib/paper_trail/human/core/field_formatter.rb', line 17

def initialize(model_config, item_type, field_name_resolver: nil, preloaded: nil)
  @model_config = model_config
  @item_type = item_type
  @field_name_resolver = field_name_resolver
  @preloaded = preloaded || {}
end

Instance Method Details

#call(field_name, previous_value, new_value) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/paper_trail/human/core/field_formatter.rb', line 24

def call(field_name, previous_value, new_value)
  config = field_config(field_name)
  resolver = build_resolver(config, field_name)

  {
    field: human_field_name(field_name),
    previous_value: resolve_value(resolver, previous_value),
    value: resolve_value(resolver, new_value)
  }
end