module SearchObject::Plugin::Enum::Handler
Public Instance Methods
apply_filter(object:, option:, enums:, scope:, value:)
click to toggle source
# File lib/search_object/plugin/enum.rb, line 29 def apply_filter(object:, option:, enums:, scope:, value:) return if value.nil? || value == '' return handle_invalid_value(object: object, option: option, enums: enums, scope: scope, value: value) unless enums.include? value.to_s object.send("apply_#{Helper.underscore(option)}_with_#{Helper.underscore(value)}", scope) end
build(name, enums)
click to toggle source
# File lib/search_object/plugin/enum.rb, line 23 def build(name, enums) enums = enums.map(&:to_s) handler = self ->(scope, value) { handler.apply_filter(object: self, option: name, enums: enums, scope: scope, value: value) } end
handle_invalid_value(object:, option:, enums:, scope:, value:)
click to toggle source
# File lib/search_object/plugin/enum.rb, line 37 def handle_invalid_value(object:, option:, enums:, scope:, value:) specific = "handle_invalid_#{option}" return object.send(specific, scope, value) if object.respond_to? specific, true return object.handle_invalid_enum(option, scope, value) if object.respond_to? :handle_invalid_enum, true raise InvalidEnumValueError.new(option, enums, value) end