Sha256: ac367dfe1b82f55f601d205237e6d8156649bc3c48e47a925d61337e51416bd0

Contents?: true

Size: 1.37 KB

Versions: 11

Compression:

Stored size: 1.37 KB

Contents

require 'rails_admin/config/fields/types/enum'

module RailsAdmin
  module Config
    module Fields
      module Types
        class ActiveRecordEnum < Enum
          RailsAdmin::Config::Fields::Types.register(self)

          def type
            :enum
          end

          register_instance_option :enum do
            abstract_model.model.defined_enums[name.to_s]
          end

          register_instance_option :pretty_value do
            bindings[:object].send(name).presence || ' - '
          end

          register_instance_option :multiple? do
            false
          end

          register_instance_option :queryable do
            false
          end

          def parse_value(value)
            return unless value.present?
            abstract_model.model.attribute_types[name.to_s].serialize(value)
          end

          def parse_input(params)
            value = params[name]
            return unless value
            params[name] = parse_input_value(value)
          end

          def form_value
            enum[super] || super
          end

        private

          def parse_input_value(value)
            abstract_model.model.attribute_types[name.to_s].deserialize(value)
          end

          def type_cast_value(value)
            abstract_model.model.column_types[name.to_s].type_cast_from_user(value)
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
rails_admin-2.3.1 lib/rails_admin/config/fields/types/active_record_enum.rb
rails_admin-2.3.0 lib/rails_admin/config/fields/types/active_record_enum.rb
rails_admin-2.2.1 lib/rails_admin/config/fields/types/active_record_enum.rb
rails_admin-2.2.0 lib/rails_admin/config/fields/types/active_record_enum.rb
rails_admin-2.1.1 lib/rails_admin/config/fields/types/active_record_enum.rb
rails_admin-2.1.0 lib/rails_admin/config/fields/types/active_record_enum.rb
rails_admin-2.0.2 lib/rails_admin/config/fields/types/active_record_enum.rb
rails_admin-2.0.1 lib/rails_admin/config/fields/types/active_record_enum.rb
rails_admin-2.0.0 lib/rails_admin/config/fields/types/active_record_enum.rb
rails_admin-2.0.0.rc lib/rails_admin/config/fields/types/active_record_enum.rb
rails_admin-2.0.0.beta lib/rails_admin/config/fields/types/active_record_enum.rb