Class: ActionBlocks::ModelBuilder

Inherits:
BlockType show all
Defined in:
lib/action_blocks/builders/model_builder.rb

Instance Attribute Summary

Attributes inherited from BaseBuilder

#dsl_delegate, #id

Instance Method Summary collapse

Methods inherited from BlockType

#is_block?, #type

Methods inherited from BaseBuilder

#after_load, array_fields, #before_build, block_type, builds, builds_many, delegate_class, #evaluate, #freeze, includes_scheme_helpers, #initialize, #is_block?, #key, references, sets, sets_many, #ui_reference, #valid?

Constructor Details

This class inherits a constructor from ActionBlocks::BaseBuilder

Instance Method Details

#active_model_is_an_active_record_classObject



21
22
23
24
25
26
27
28
29
# File 'lib/action_blocks/builders/model_builder.rb', line 21

def active_model_is_an_active_record_class
  if @active_model.class != Class
    errors.add(:active_model, "Must be an ActiveRecord Class")
  else
    if !@active_model.ancestors.include? ActiveRecord::Base
      errors.add(:active_model, "Must be an ActiveRecord Class")
    end
  end
end

#after_build(parent, *args) ⇒ Object



31
32
33
34
35
36
# File 'lib/action_blocks/builders/model_builder.rb', line 31

def after_build(parent, *args)
  # Every model has an identity field
  if !@fields.map(&:id).include?(:id)
    @dsl_delegate.identity
  end
end

#filter_reqs(record_id:, user:) ⇒ Object



62
63
64
# File 'lib/action_blocks/builders/model_builder.rb', line 62

def filter_reqs(record_id:, user:)
  [:eq, :id, record_id]
end

#hashify(user) ⇒ Object



66
67
68
69
70
71
72
73
74
# File 'lib/action_blocks/builders/model_builder.rb', line 66

def hashify(user)
  {
    key: key,
    type: type,
    name_field: name_field.try(:id),
    singular_name: singular_name,
    plural_name: plural_name
  }
end

#name_to_json(record_id:, user:) ⇒ Object



45
46
47
48
49
50
# File 'lib/action_blocks/builders/model_builder.rb', line 45

def name_to_json(record_id:, user:)
  select_reqs = [name_field.select_requirements]
  filter_reqs = [:eq, :id, record_id]
  engine = DataEngine.new(active_model, select_reqs: select_reqs, filter_reqs: filter_reqs)
  engine.first_to_json
end

#select_requirements(fields = nil) ⇒ Object



38
39
40
41
42
43
# File 'lib/action_blocks/builders/model_builder.rb', line 38

def select_requirements(fields = nil)
  sel_reqs = @fields.map(&:select_requirements)
  sel_reqs = sel_reqs.select { |r| fields.include? r[:field_name] } unless fields.nil?

  return sel_reqs
end

#selection_filter_reqs(record_id:, user:) ⇒ Object



52
53
54
55
56
57
58
59
60
# File 'lib/action_blocks/builders/model_builder.rb', line 52

def selection_filter_reqs(record_id:, user:)
  [
      {
        base_path: [active_model, :id],
        predicate: :eq,
        related_path: [record_id]
      }
  ]
end