discourse/lib/screening_model.rb

39 lines
814 B
Ruby

# frozen_string_literal: true
module ScreeningModel
extend ActiveSupport::Concern
module ClassMethods
def actions
@actions ||= Enum.new(:block, :do_nothing, :allow_admin)
end
def default_action(action_key)
@default_action = action_key
end
def df_action
@default_action || :do_nothing
end
end
included { before_validation :set_default_action }
def set_default_action
self.action_type ||= self.class.actions[self.class.df_action]
end
def action_name=(arg)
if arg.nil? || !self.class.actions.has_key?(arg.to_sym)
raise ArgumentError.new("Invalid action type #{arg}")
end
self.action_type = self.class.actions[arg.to_sym]
end
def record_match!
self.match_count += 1
self.last_match_at = Time.zone.now
save
end
end