module Valideizer::Rails

Public Class Methods

included(base) click to toggle source
# File lib/valideizer/rails.rb, line 9
def self.included(base)
  base.before_action :valideize!

  base.class_eval do
    class << self
      def valideize(*methods, &options_block)
        methods.each do |method|
          method = method.to_s
          holder = Valideizer::Holder.instance
          holder.valideizers[controller_path] = {} if holder.valideizers[controller_path].nil?

          # raise "Action #{method} is not defined in #{controller_name}" unless action_methods.include? method.to_s

          if holder.valideizers[controller_path][method].nil?
            holder.valideizers[controller_path][method] = Valideizer::Core.new
          end

          valideizer = holder.valideizers[controller_path][method]
          valideizer.instance_eval(&options_block)
        end
      end

      def valideizer_callback(method_name)
        holder = Valideizer::Holder.instance
        unless holder.output_type.present?
          # holder.raise_exception
          holder.callback_controller = controller_path
          holder.callback_method = method_name.to_s
          holder.output_type = Valideizer::Holder::CALLBACK_TYPE
        end
      end

      def valideizer_method(method_name)
        holder = Valideizer::Holder.instance
        unless holder.output_type.present?
          holder.render_controller = controller_path
          holder.render_method = method_name.to_s
          holder.output_type = Valideizer::Holder::METHOD_TYPE
        end
      end

      def valideizer_render(status = 400, &block)
        holder = Valideizer::Holder.instance
        unless holder.output_type.present?
          holder.status = status
          holder.render_block = block
          holder.output_type = Valideizer::Holder::RENDER_TYPE
        end
      end
    end
  end
end
valideize(*methods, &options_block) click to toggle source
# File lib/valideizer/rails.rb, line 14
def valideize(*methods, &options_block)
  methods.each do |method|
    method = method.to_s
    holder = Valideizer::Holder.instance
    holder.valideizers[controller_path] = {} if holder.valideizers[controller_path].nil?

    # raise "Action #{method} is not defined in #{controller_name}" unless action_methods.include? method.to_s

    if holder.valideizers[controller_path][method].nil?
      holder.valideizers[controller_path][method] = Valideizer::Core.new
    end

    valideizer = holder.valideizers[controller_path][method]
    valideizer.instance_eval(&options_block)
  end
end
valideizer_callback(method_name) click to toggle source
# File lib/valideizer/rails.rb, line 31
def valideizer_callback(method_name)
  holder = Valideizer::Holder.instance
  unless holder.output_type.present?
    # holder.raise_exception
    holder.callback_controller = controller_path
    holder.callback_method = method_name.to_s
    holder.output_type = Valideizer::Holder::CALLBACK_TYPE
  end
end
valideizer_method(method_name) click to toggle source
# File lib/valideizer/rails.rb, line 41
def valideizer_method(method_name)
  holder = Valideizer::Holder.instance
  unless holder.output_type.present?
    holder.render_controller = controller_path
    holder.render_method = method_name.to_s
    holder.output_type = Valideizer::Holder::METHOD_TYPE
  end
end
valideizer_render(status = 400, &block) click to toggle source
# File lib/valideizer/rails.rb, line 50
def valideizer_render(status = 400, &block)
  holder = Valideizer::Holder.instance
  unless holder.output_type.present?
    holder.status = status
    holder.render_block = block
    holder.output_type = Valideizer::Holder::RENDER_TYPE
  end
end

Public Instance Methods

valideize!() click to toggle source
# File lib/valideizer/rails.rb, line 62
def valideize!
  valideizer = holder.valideizers[controller_path][action_name] rescue nil
  return if valideizer.nil?

  unless valideizer.valideized?(params)
    case holder.output_type
    when Valideizer::Holder::CALLBACK_TYPE
      redirect_to controller: holder.callback_controller, action: holder.callback_method, errors: valideizer.errors
    when Valideizer::Holder::RENDER_TYPE
      render json: instance_exec(valideizer.errors, &holder.render_block), status: holder.status
    else
      render json: valideizer.errors, status: 400
    end
  end
end
valideized?(params) click to toggle source
# File lib/valideizer/rails.rb, line 78
def valideized?(params)
  holder.valideizers[controller_path][action_name].valideized?(params)
end
valideizer_errors() click to toggle source
# File lib/valideizer/rails.rb, line 82
def valideizer_errors
  holder.valideizers[controller_path][action_name].errors
end

Private Instance Methods

holder() click to toggle source
# File lib/valideizer/rails.rb, line 88
def holder
  Valideizer::Holder.instance
end