Class: Airview::ResourceBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/airview/resource_builder.rb

Class Method Summary collapse

Class Method Details

.build(definition) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/airview/resource_builder.rb', line 15

def build(definition)
  Resource.new(definition.key, model: definition.record_class_name).tap do |resource|
    resource.label = definition.label
    resource.label_method = definition.label_method.presence&.to_sym || :to_s

    definition.field_definitions.visible.order(:position, :name).each do |field|
      add_field(resource, field)
    end

    add_missing_virtual_fields(resource, definition)
  end
end

.enabled_resourcesObject



6
7
8
9
10
11
12
13
# File 'lib/airview/resource_builder.rb', line 6

def enabled_resources
  definitions = Airview::ResourceDefinition.enabled.includes(:field_definitions).order(:position, :label)

  definitions.each_with_object({}) do |definition, resources|
    resource = build(definition)
    resources[resource.key] = resource
  end
end