/
select.rb
44 lines (36 loc) · 906 Bytes
/
select.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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