Sha256: c80cf8def6539ee67b2e044ebf31b683cff5099db8ca0352bc16868c1ef59518
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
# frozen_string_literal: true module Azeroth # @api private # @author Darthjee # # Class responsible for adding params handling methods to a controller class ParamsBuilder # @param model [Model] resource interface # @param builder [Sinclair] methods builder def initialize(model, builder) @model = model @builder = builder end # Append the params methods to be built # # @return [Array<Sinclair::MethodDefinition>] def append method_name = name allowed_attributes = permitted_attributes.map(&:to_sym) add_method("#{name}_id") { params.require(:id) } add_method("#{name}_params") do params.require(method_name) .permit(*allowed_attributes) end end attr_reader :model, :builder # @method model # @api private # @private # # Resource interface # # @return [Model] # @method builder # @api private # @private # # Methods builder # # @return [Sinclair] delegate :add_method, to: :builder # @method add_method # @api private # @private # # Appends a method # # @return [Array<Sinclair::MethodDefinition>] delegate :name, :klass, to: :model # @method name # @api private # @private # # Resource name # # @return [Symbol,String] # @method klass # @api private # @private # # Controller to be changed # # @return [Array<Sinclair::MethodDefinition>] # Returns all updatable attributes # # @return [Array<String>] def permitted_attributes @permitted_attributes ||= klass.attribute_names - ['id'] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
azeroth-0.10.1 | lib/azeroth/params_builder.rb |