Module: AdminIt::ObjectData::Context::ClassMethods

Defined in:
lib/admin_it/data/object.rb

Instance Method Summary collapse

Instance Method Details

#load_fieldsObject



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