Class: ActiveRecord::Journal::Journable::Options

Inherits:
Struct
  • Object
show all
Defined in:
lib/active_record/journal/journable/options.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**kwargs) ⇒ Options

rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/AbcSize



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/active_record/journal/journable/options.rb', line 15

def initialize(**kwargs) # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/AbcSize
  type = kwargs[:type].to_sym
  kwargs[:type] = type
  kwargs[:entries_class] ||= ActiveRecord::Journal.configuration.entries_class
  kwargs[:tags_class] ||= ActiveRecord::Journal.configuration.tags_class
  kwargs[:on] = kwargs[:on]&.map(&:to_s) || ActiveRecord::Journal::ACTIONS[type]
  kwargs[:only] = kwargs[:only]&.map(&:to_s)
  kwargs[:except] = kwargs[:except]&.map(&:to_s)
  kwargs[:mask] = kwargs[:mask]&.map(&:to_s)
  super(**kwargs)
end

Class Method Details

.parse(kwargs, type) ⇒ Object



9
10
11
12
13
# File 'lib/active_record/journal/journable/options.rb', line 9

def self.parse(kwargs, type)
  options = Options.new(**kwargs, type: type)
  options.check_actions!
  options
end

Instance Method Details

#check_actions!Object



27
28
29
30
31
32
33
# File 'lib/active_record/journal/journable/options.rb', line 27

def check_actions!
  on.each do |action|
    next if ActiveRecord::Journal::ACTIONS[type.to_sym].include?(action)

    raise OptionError, "#{action} is not a valid value for the on option"
  end
end