class Adminable::Fields::Base

Base class for fields @note Cannot be initialized

Attributes

name[R]

@return [Symbol] field name

options[R]

@return [Hash] default options for field

Public Class Methods

new(name, options = {}) click to toggle source

@param name [Symbol] field name e.g. ‘:id` or `:title` @param options [Hash] options, see {default_options}

# File lib/adminable/fields/base.rb, line 14
def initialize(name, options = {})
  raise 'Base class cannot be initialized' if self.class == Base

  @name = name.to_sym
  @options = default_options.merge(options)
end

Public Instance Methods

form_partial_path() click to toggle source

@return [String] path to field form partial

# File lib/adminable/fields/base.rb, line 50
def form_partial_path
  "form/#{type}"
end
index_partial_path() click to toggle source

@return [String] path to field index partial

# File lib/adminable/fields/base.rb, line 45
def index_partial_path
  "index/#{type}"
end
key() click to toggle source

@return [Symbol] field form key

# File lib/adminable/fields/base.rb, line 22
def key
  @key ||= name
end
ransack_name() click to toggle source

@return [String] ransack form key

# File lib/adminable/fields/base.rb, line 32
def ransack_name
  @ransack_name ||= "#{name}_cont"
end
strong_parameter() click to toggle source

@return [Symbol] controller strong parameters key

# File lib/adminable/fields/base.rb, line 27
def strong_parameter
  @strong_parameter ||= key
end
type() click to toggle source

@return [Symbol] field type @example

Adminable::Fields::String.new(:title).type
# => :string
# File lib/adminable/fields/base.rb, line 40
def type
  @type ||= self.class.name.demodulize.underscore.to_sym
end

Private Instance Methods

default_options() click to toggle source
# File lib/adminable/fields/base.rb, line 56
def default_options
  {
    index: true,
    form: true,
    wysiwyg: false,
    search: false,
    required: false,
    center: %i(integer boolean float decimal).include?(type)
  }
end