class RailsAdmin::Config::Fields::Base
Constants
- NAMED_INSTANCE_VARIABLES
Attributes
abstract_model[R]
defined[RW]
name[R]
order[RW]
parent[R]
properties[R]
root[R]
section[RW]
Public Class Methods
new(parent, name, properties)
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 27 def initialize(parent, name, properties) @parent = parent @root = parent.root @abstract_model = parent.abstract_model @defined = false @name = name.to_sym @order = 0 @properties = properties @section = parent end
Public Instance Methods
association?()
click to toggle source
Is this an association
# File lib/rails_admin/config/fields/base.rb, line 289 def association? is_a?(RailsAdmin::Config::Fields::Association) end
eager_load_values()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 269 def eager_load_values case eager_load when true [name] when false, nil [] else Array.wrap(eager_load) end end
editable?()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 284 def editable? !((@properties && @properties.read_only?) || (bindings[:object] && bindings[:object].readonly?)) end
errors()
click to toggle source
Reader for validation errors of the bound object
# File lib/rails_admin/config/fields/base.rb, line 294 def errors ([name] + children_fields).uniq.collect do |column_name| bindings[:object].errors[column_name] end.uniq.flatten end
filter_options()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 101 def filter_options { label: label, name: name, operator: default_filter_operator, operators: filter_operators, type: type, } end
form_default_value()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 381 def form_default_value (default_value if bindings[:object].new_record? && value.nil?) end
form_value()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 385 def form_value form_default_value.nil? ? formatted_value : form_default_value end
generic_field_help()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 358 def generic_field_help model = abstract_model.model_name.underscore model_lookup = :"admin.help.#{model}.#{name}" translated = I18n.translate(model_lookup, help: generic_help, default: [generic_help]) (translated.is_a?(Hash) ? translated.to_a.first[1] : translated).html_safe end
generic_help()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 354 def generic_help "#{required? ? I18n.translate('admin.form.required') : I18n.translate('admin.form.optional')}. " end
inverse_of()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 373 def inverse_of nil end
method_name()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 377 def method_name name end
optional(state = nil, &block)
click to toggle source
Inverse accessor whether this field is required.
@see RailsAdmin::Config::Fields::Base.register_instance_option
:required?
# File lib/rails_admin/config/fields/base.rb, line 310 def optional(state = nil, &block) if !state.nil? || block required state.nil? ? proc { instance_eval(&block) == false } : state == false else optional? end end
optional=(state)
click to toggle source
Writer to make field optional.
@see RailsAdmin::Config::Fields::Base.optional
# File lib/rails_admin/config/fields/base.rb, line 321 def optional=(state) optional(state) end
optional?()
click to toggle source
Reader whether field is optional.
@see RailsAdmin::Config::Fields::Base.register_instance_option
:required?
# File lib/rails_admin/config/fields/base.rb, line 303 def optional? !required? end
parse_input(_params)
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 369 def parse_input(_params) # overridden end
parse_value(value)
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 365 def parse_value(value) value end
sort_column()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 63 def sort_column if sortable == true "#{abstract_model.quoted_table_name}.#{abstract_model.quote_column_name(name)}" elsif (sortable.is_a?(String) || sortable.is_a?(Symbol)) && sortable.to_s.include?('.') # just provide sortable, don't do anything smart sortable elsif sortable.is_a?(Hash) # just join sortable hash, don't do anything smart "#{sortable.keys.first}.#{sortable.values.first}" elsif association? # use column on target table "#{associated_model_config.abstract_model.quoted_table_name}.#{abstract_model.quote_column_name(sortable)}" else # use described column in the field conf. "#{abstract_model.quoted_table_name}.#{abstract_model.quote_column_name(sortable)}" end end
type()
click to toggle source
Reader for field’s type
# File lib/rails_admin/config/fields/base.rb, line 326 def type @type ||= self.class.name.to_s.demodulize.underscore.to_sym end
type_css_class()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 43 def type_css_class "#{type}_type" end
value()
click to toggle source
Reader for field’s value
# File lib/rails_admin/config/fields/base.rb, line 331 def value bindings[:object].safe_send(name) rescue NoMethodError => e raise e.exception <<~ERROR #{e.message} If you want to use a RailsAdmin virtual field(= a field without corresponding instance method), you should declare 'formatted_value' in the field definition. field :#{name} do formatted_value{ bindings[:object].call_some_method } end ERROR end
virtual?()
click to toggle source
# File lib/rails_admin/config/fields/base.rb, line 47 def virtual? properties.blank? end