Skip to content

Latest commit

 

History

History
42 lines (35 loc) · 908 Bytes

command_and_handler.md

File metadata and controls

42 lines (35 loc) · 908 Bytes

COMMAND & HANDLER

class RegisterAccountCommand < Commandos::IAmACommand
  values do
    string :identity
    string :password
    string :password_confirmation
  end

  validates_presence_of \
    :identity,
    :password,
    :password_confirmation

  validate \
    :password_confirmation!

private
  def password_confirmation!
    unless password_confirmation == password
      errors.add :password_confirmation, "doesn't match password"
    end
  end
end

class RegisterAccountHandler
  def initialize(command)
    @command = command 
  end

  def call
    return command unless command.valid?
    account_to_register = Account.new command.attributes
    account_to_register.save!
  end
end

command = RegisterAccountCommand.new identity: 'test@test.test', password: 'Password123123!@#', password_confirmation: 'Password123123!@#'
handler = RegisterAccountHandler.new command
handler.call