Sha256: 0f4d00aeda8968c0b3b46b39a05f797a95cc6ef3ec9f5931a065f2261511dce7

Contents?: true

Size: 906 Bytes

Versions: 2

Compression:

Stored size: 906 Bytes

Contents

require_relative "base"

module Administrate
  module Field
    class Select < Field::Base
      def self.searchable?
        true
      end

      def selectable_options
        values =
          if options.key?(:collection)
            options.fetch(:collection)
          elsif active_record_enum?
            active_record_enum_values
          else
            []
          end

        if values.respond_to? :call
          values = values.arity.positive? ? values.call(self) : values.call
        end

        values
      end

      def include_blank_option
        options.fetch(:include_blank, false)
      end

      def active_record_enum?
        resource.class.defined_enums.key?(attribute.to_s)
      end

      def active_record_enum_values
        resource.class.defined_enums[attribute.to_s].map(&:first)
      end

      def html_controller
        "select"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
administrate-1.0.0.beta3 lib/administrate/field/select.rb
administrate-1.0.0.beta2 lib/administrate/field/select.rb