module Ransack::Enum::Adapters::ActiveRecord::Base

Ransack::Enum::Adapters::ActiveRecord::Base

Public Instance Methods

enum(definitions) click to toggle source

@see github.com/rails/rails/blob/66cabeda2c46c582d19738e1318be8d59584cc5b/activerecord/lib/active_record/enum.rb#L150 @param [Hash] definitions @return [Hash]

Calls superclass method
# File lib/ransack/enum/adapters/active_record/base.rb, line 12
def enum(definitions)
  enum_ransacker(*definitions.to_a.first) if respond_to?(:ransacker)
  super
end

Private Instance Methods

enum_ransack_value_converter(name, values) click to toggle source

@param [String] name @param [Hash] values @return [Proc]

# File lib/ransack/enum/adapters/active_record/base.rb, line 32
def enum_ransack_value_converter(name, values)
  lambda do |value|
    val = values[value.to_sym]
    return val if Ransack::Enum.enabled? && !val.nil?

    Ransack::Nodes::Value.new(nil, value).cast(attribute_types[name]&.type)
  end
end
enum_ransacker(name, values) click to toggle source

@param [Symbol] name @param [Hash] values @return [Hash]

# File lib/ransack/enum/adapters/active_record/base.rb, line 22
def enum_ransacker(name, values)
  converter = enum_ransack_value_converter(name.to_s, values)
  ransacker name, formatter: lambda { |value|
    value.is_a?(Array) ? value.map(&converter) : converter.call(value)
  }
end