Class: RailsAdmin::Config::Fields::Base

Inherits:
Object
  • Object
show all
Includes:
Configurable, Groupable, Hideable, Proxyable
Defined in:
lib/rails_admin/config/fields/base.rb

Overview

rubocop:disable ClassLength

Instance Attribute Summary collapse

Attributes included from Proxyable

#bindings

Instance Method Summary collapse

Methods included from Groupable

#group

Methods included from Hideable

#hidden?, #hide, included, #show

Methods included from Configurable

#has_option?, included, #register_deprecated_instance_option, #register_instance_option

Methods included from Proxyable

#with

Constructor Details

#initialize(parent, name, properties) ⇒ Base

Returns a new instance of Base.



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rails_admin/config/fields/base.rb', line 19

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

Instance Attribute Details

#abstract_modelObject (readonly)

Returns the value of attribute abstract_model.



15
16
17
# File 'lib/rails_admin/config/fields/base.rb', line 15

def abstract_model
  @abstract_model
end

#definedObject

Returns the value of attribute defined.



16
17
18
# File 'lib/rails_admin/config/fields/base.rb', line 16

def defined
  @defined
end

#nameObject (readonly)

Returns the value of attribute name.



15
16
17
# File 'lib/rails_admin/config/fields/base.rb', line 15

def name
  @name
end

#orderObject

Returns the value of attribute order.



16
17
18
# File 'lib/rails_admin/config/fields/base.rb', line 16

def order
  @order
end

#parentObject (readonly)

Returns the value of attribute parent.



17
18
19
# File 'lib/rails_admin/config/fields/base.rb', line 17

def parent
  @parent
end

#propertiesObject (readonly)

Returns the value of attribute properties.



15
16
17
# File 'lib/rails_admin/config/fields/base.rb', line 15

def properties
  @properties
end

#rootObject (readonly)

Returns the value of attribute root.



17
18
19
# File 'lib/rails_admin/config/fields/base.rb', line 17

def root
  @root
end

#sectionObject

Returns the value of attribute section.



16
17
18
# File 'lib/rails_admin/config/fields/base.rb', line 16

def section
  @section
end

Instance Method Details

#association?Boolean

Is this an association

Returns:

  • (Boolean)


228
229
230
# File 'lib/rails_admin/config/fields/base.rb', line 228

def association?
  is_a?(RailsAdmin::Config::Fields::Association)
end

#editable?Boolean

Returns:

  • (Boolean)


223
224
225
# File 'lib/rails_admin/config/fields/base.rb', line 223

def editable?
  !(@properties && @properties.read_only?)
end

#errorsObject

Reader for validation errors of the bound object



233
234
235
236
237
# File 'lib/rails_admin/config/fields/base.rb', line 233

def errors
  ([name] + children_fields).uniq.collect do |column_name|
    bindings[:object].errors[column_name]
  end.uniq.flatten
end

#form_default_valueObject



320
321
322
# File 'lib/rails_admin/config/fields/base.rb', line 320

def form_default_value
  (default_value if bindings[:object].new_record? && value.nil?)
end

#form_valueObject



324
325
326
# File 'lib/rails_admin/config/fields/base.rb', line 324

def form_value
  form_default_value.nil? ? formatted_value : form_default_value
end

#generic_field_helpObject



297
298
299
300
301
302
# File 'lib/rails_admin/config/fields/base.rb', line 297

def generic_field_help
  model = abstract_model.model_name.underscore
  model_lookup = "admin.help.#{model}.#{name}".to_sym
  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_helpObject



293
294
295
# File 'lib/rails_admin/config/fields/base.rb', line 293

def generic_help
  (required? ? I18n.translate('admin.form.required') : I18n.translate('admin.form.optional')) + '. '
end

#inspectObject



328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
# File 'lib/rails_admin/config/fields/base.rb', line 328

def inspect
  "#<#{self.class.name}[#{name}] #{
    instance_variables.collect do |v|
      value = instance_variable_get(v)
      if [:@parent, :@root, :@section, :@children_fields_registered,
          :@associated_model_config, :@group, :@bindings].include? v
        if value.respond_to? :name
          "#{v}=#{value.name.inspect}"
        else
          "#{v}=#{value.class.name}"
        end
      else
        "#{v}=#{value.inspect}"
      end
    end.join(', ')
  }>"
end

#inverse_ofObject



312
313
314
# File 'lib/rails_admin/config/fields/base.rb', line 312

def inverse_of
  nil
end

#method_nameObject



316
317
318
# File 'lib/rails_admin/config/fields/base.rb', line 316

def method_name
  name
end

#optional(state = nil, &block) ⇒ Object

Inverse accessor whether this field is required.

See Also:

  • :required?


249
250
251
252
253
254
255
# File 'lib/rails_admin/config/fields/base.rb', line 249

def optional(state = nil, &block)
  if !state.nil? || block # rubocop:disable NonNilCheck
    required state.nil? ? proc { false == (instance_eval(&block)) } : false == state
  else
    optional?
  end
end

#optional=(state) ⇒ Object

Writer to make field optional.

See Also:

  • optional


260
261
262
# File 'lib/rails_admin/config/fields/base.rb', line 260

def optional=(state)
  optional(state)
end

#optional?Boolean

Reader whether field is optional.

Returns:

  • (Boolean)

See Also:

  • :required?


242
243
244
# File 'lib/rails_admin/config/fields/base.rb', line 242

def optional?
  !required?
end

#parse_input(_params) ⇒ Object



308
309
310
# File 'lib/rails_admin/config/fields/base.rb', line 308

def parse_input(_params)
  # overriden
end

#parse_value(value) ⇒ Object



304
305
306
# File 'lib/rails_admin/config/fields/base.rb', line 304

def parse_value(value)
  value
end

#typeObject

Reader for field’s type



265
266
267
# File 'lib/rails_admin/config/fields/base.rb', line 265

def type
  @type ||= self.class.name.to_s.demodulize.underscore.to_sym
end

#type_css_classObject



35
36
37
# File 'lib/rails_admin/config/fields/base.rb', line 35

def type_css_class
  "#{type}_type"
end

#valueObject

Reader for field’s value



270
271
272
273
274
275
276
277
278
279
280
281
# File 'lib/rails_admin/config/fields/base.rb', line 270

def value
  bindings[:object].safe_send(name)
rescue NoMethodError => e
  raise e.exception <<-EOM.gsub(/^\s{10}/, '')
  #{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
  EOM
end

#virtual?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/rails_admin/config/fields/base.rb', line 39

def virtual?
  properties.blank?
end