Sha256: 49de52ef64a4d525907cbe686ec119527ca7af504071e20ce61c88d2ec537d0c
Contents?: true
Size: 1.18 KB
Versions: 1
Compression:
Stored size: 1.18 KB
Contents
module ExplicitParameters module Controller extend ActiveSupport::Concern Boolean = Axiom::Types::Boolean class << self attr_accessor :last_parameters end included do self.parameters = {} rescue_from ExplicitParameters::InvalidParameters, with: :render_parameters_error end module ClassMethods attr_accessor :parameters def method_added(action) return unless Controller.last_parameters parameters[action.to_s] = Controller.last_parameters const_set("#{action.to_s.camelize}Parameters", Controller.last_parameters) Controller.last_parameters = nil end def params(&block) Controller.last_parameters = ExplicitParameters::Parameters.define(&block) end def parse_parameters_for(action_name, params) if declaration = parameters[action_name] declaration.parse!(params) else params end end end private def params @validated_params ||= self.class.parse_parameters_for(action_name, super) end def render_parameters_error(error) render json: error.message, status: :unprocessable_entity end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
explicit-parameters-0.0.1 | lib/explicit_parameters/controller.rb |