class Handlers::Delegate

Public Class Methods

new(klass, delegate) click to toggle source
Calls superclass method Handlers::Base::new
# File lib/handlers/delegates.rb, line 15
def initialize(klass, delegate)
  @delegate = delegate

  @form = @delegate[:form]
  @foreign_key = @delegate[:foreign_key]
  @relation = @delegate[:relation]
  @attributes = @delegate[:attributes]

  super(klass)
end

Public Instance Methods

handle() click to toggle source
# File lib/handlers/delegates.rb, line 26
def handle
  @attributes = @raw_params.slice(*@attributes.map(&:to_s)).merge({
    @foreign_key => @resource.id
  })

  proceed_debug

  @form.new(@attributes, @resource.send(@relation)).save!
  @resource.reload
end
proceed_debug() click to toggle source
# File lib/handlers/delegates.rb, line 37
def proceed_debug
  return unless upper(:@@debug)

  puts '👉   Processing delegate' 
  puts "#{@form}.new(#{@attributes}, #{@resource.send(@relation) || "nil"}).save!"
  puts ""
end