class AllowedParams::ValidatorBuilder

Public Class Methods

model_name() click to toggle source
# File lib/allowed_params/validator_builder.rb, line 23
def self.model_name
  ActiveModel::Name.new(self, nil, @controller_name)
end
new(controller) click to toggle source
# File lib/allowed_params/validator_builder.rb, line 5
def initialize(controller)
  @controller = controller
  @params = {}
end

Public Instance Methods

not_white_listed() click to toggle source
# File lib/allowed_params/validator_builder.rb, line 40
def not_white_listed
  @params.keys.map(&:to_s) - members.map(&:to_s)
end
validates(name, options = {}) click to toggle source
# File lib/allowed_params/validator_builder.rb, line 10
def validates(name, options = {})
  @params[name] = options
end
validator() click to toggle source
# File lib/allowed_params/validator_builder.rb, line 14
def validator
  params_options = @params
  controller_name = @controller.name.underscore

  Struct.new(*params_options.keys) do
    include Model
    attr_reader :params
    @controller_name = controller_name

    def self.model_name
      ActiveModel::Name.new(self, nil, @controller_name)
    end

    params_options.each_pair do |name, validations|
      if validations.present?
        validates name, validations
      end
    end

    def initialize(params = {})
      @params = params.except(*Array(AllowedParams.config.allowed_params)).except(:controller, :action)
      members.each do |name|
        send(:"#{name}=", params[name])
      end
    end

    def not_white_listed
      @params.keys.map(&:to_s) - members.map(&:to_s)
    end

  end
end