module EnsureParamExists

Public Class Methods

_ensure_param_exists_(operator, expected_params) click to toggle source
# File lib/ensure_param_exists.rb, line 17
def self._ensure_param_exists_(operator, expected_params)
  opts = expected_params.last.kind_of?(Hash) ? expected_params.pop : {}

  method_name = "ensure_#{expected_params.join("_#{operator}_")}_exists"
  define_method(method_name) do
    return if expected_params.send(_operator_map_[operator]) { |expected_param| params[expected_param.to_sym].present? }
    render json: { success: false, message: "missing #{expected_params.join(" #{operator} ")} parameter" }, status: 422
  end

  before_filter method_name.to_sym, opts
end
ensure_all_params(*expected_params) click to toggle source
# File lib/ensure_param_exists.rb, line 13
def self.ensure_all_params(*expected_params)
  _ensure_param_exists_(:and, expected_params)
end
ensure_any_params(*expected_params) click to toggle source
# File lib/ensure_param_exists.rb, line 9
def self.ensure_any_params(*expected_params)
  _ensure_param_exists_(:or, expected_params)
end
ensure_param(expected_param, opts = {}) click to toggle source
# File lib/ensure_param_exists.rb, line 5
def self.ensure_param(expected_param, opts = {})
  _ensure_param_exists_(:and, [expected_param, opts])
end

Public Instance Methods

_operator_map_() click to toggle source
# File lib/ensure_param_exists.rb, line 29
def _operator_map_
  { and: 'all?', or: 'any?' }
end