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
|
# File 'lib/admin_it/data/object.rb', line 9
def load_fields
all = entity_class.instance_methods(false) - Object.instance_methods
getters = all.select do |m|
m.to_s =~ /\w\z/ && entity_class.instance_method(m).arity == 0
end
setters = all.select do |m|
m.to_s[-1] == '=' && entity_class.instance_method(m).arity == 1
end
fields = getters.map do |m|
AdminIt::Field.create(
m,
entity_class,
readable: true,
writable: setters.include?("#{m}=".to_sym)
)
end
setters.reject! { |m| getters.include?(m.to_s[0..-2].to_sym) }
fields.concat(setters.map do |m|
name = m.to_s[0..-2].to_sym
AdminIt::Field.create(
name,
entity_class,
readable: false,
writable: true
)
end)
end
|