class ActionBlocks::ReferenceFieldBuilder

Attributes

association_name[RW]

Public Instance Methods

add_foreign_key_as_integer(parent) click to toggle source
# File lib/action_blocks/builders/model_builder.rb, line 361
def add_foreign_key_as_integer(parent)
  if relation
    parent.dsl_delegate.integer(relation.join_foreign_key.to_sym)
  end
end
before_build(parent, *args) click to toggle source
Calls superclass method ActionBlocks::FieldBlock#before_build
# File lib/action_blocks/builders/model_builder.rb, line 353
def before_build(parent, *args)
  super(parent, *args)
  @association_name = args[0]
  @field_type = 'reference'
  @model_key = "model-#{args[1] || args[0]}"
  add_foreign_key_as_integer(parent)
end
hashify(user) click to toggle source
# File lib/action_blocks/builders/model_builder.rb, line 401
def hashify(user)
  {
    type: :reference,
    id: @id
  }
end
match_requirements(select_as_prefix = nil) click to toggle source
# File lib/action_blocks/builders/model_builder.rb, line 395
def match_requirements(select_as_prefix = nil)
    {
      path: [select_as_prefix, [association_name, relation.join_primary_key].join('_').to_sym].compact.flatten,
    }
end
relation() click to toggle source
# File lib/action_blocks/builders/model_builder.rb, line 369
def relation
  if @parent_model.active_model
    @parent_model.active_model.reflections[@association_name.to_s]
  end
end
select_requirements(select_as_prefix = nil) click to toggle source
# File lib/action_blocks/builders/model_builder.rb, line 387
def select_requirements(select_as_prefix = nil)
  target_data_reqs = model.name_field.select_requirements([select_as_prefix, association_name].compact.join('_'))
    {
      field_name: association_name,
      path: [association_name, target_data_reqs[:path]].flatten,
    }
end
validate_association_name() click to toggle source
# File lib/action_blocks/builders/model_builder.rb, line 375
def validate_association_name
  # puts @parent_model.active_model.reflections.keys.inspect
  # puts @association_name.to_s
  unless relation
    errors.add(:association_name, "Association #{@association_name.to_s} is not a valid relationship for model #{@parent_model.active_model.to_s}.  Valid relations include: #{@parent_model.active_model.reflections.keys.inspect}")
  end

  unless relation && relation.belongs_to?
    errors.add(:association_name, "Association #{@association_name.to_s} is not a valid belongs_to relationship")
  end
end