Class: Lotus::Action::Params
- Inherits:
-
Object
- Object
- Lotus::Action::Params
- Includes:
- Validations
- Defined in:
- lib/lotus/action/params.rb
Overview
A set of params requested by the client
It’s able to extract the relevant params from a Rack env of from an Hash.
There are three scenarios:
* When used with Lotus::Router: it contains only the params from the request
* When used standalone: it contains all the Rack env
* Default: it returns the given hash as it is. It's useful for testing purposes.
Constant Summary collapse
- RACK_INPUT =
The key that returns raw input from the Rack env
'rack.input'.freeze
- ROUTER_PARAMS =
The key that returns router params from the Rack env This is a builtin integration for Lotus::Router
'router.params'.freeze
- GET_SEPARATOR =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Separator for #get
'.'.freeze
Instance Attribute Summary collapse
- #env ⇒ Object readonly private
- #raw ⇒ Object readonly
Class Method Summary collapse
-
.build_validation_class(&block) ⇒ Object
private
Overrides the method in Lotus::Validation to build a class that inherits from Params rather than only Lotus::Validations.
-
.param(name, options = {}, &block) ⇒ Object
Whitelist and validate a parameter.
- .whitelisting? ⇒ Boolean
Instance Method Summary collapse
-
#[](key) ⇒ Object?
Returns the object associated with the given key.
-
#get(key) ⇒ Object, NilClass
Get an attribute value associated with the given key.
-
#initialize(env) ⇒ Params
constructor
Initialize the params and freeze them.
-
#to_h ⇒ ::Hash
(also: #to_hash)
Serialize params to Hash.
Constructor Details
#initialize(env) ⇒ Params
Initialize the params and freeze them.
131 132 133 134 135 |
# File 'lib/lotus/action/params.rb', line 131 def initialize(env) @env = env super(_compute_params) # freeze end |
Instance Attribute Details
#env ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
117 118 119 |
# File 'lib/lotus/action/params.rb', line 117 def env @env end |
#raw ⇒ Object (readonly)
122 123 124 |
# File 'lib/lotus/action/params.rb', line 122 def raw @raw end |
Class Method Details
.build_validation_class(&block) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Overrides the method in Lotus::Validation to build a class that inherits from Params rather than only Lotus::Validations.
107 108 109 110 111 |
# File 'lib/lotus/action/params.rb', line 107 def self.build_validation_class(&block) kls = Class.new(Params) kls.class_eval(&block) kls end |
.param(name, options = {}, &block) ⇒ Object
Whitelist and validate a parameter
91 92 93 94 |
# File 'lib/lotus/action/params.rb', line 91 def self.param(name, = {}, &block) attribute name, , &block nil end |
.whitelisting? ⇒ Boolean
98 99 100 |
# File 'lib/lotus/action/params.rb', line 98 def self.whitelisting? defined_attributes.any? end |
Instance Method Details
#[](key) ⇒ Object?
Returns the object associated with the given key
144 145 146 |
# File 'lib/lotus/action/params.rb', line 144 def [](key) @attributes.get(key) end |
#get(key) ⇒ Object, NilClass
Get an attribute value associated with the given key. Nested attributes are reached with a dot notation.
182 183 184 185 186 187 188 189 190 191 192 |
# File 'lib/lotus/action/params.rb', line 182 def get(key) key, *keys = key.to_s.split(GET_SEPARATOR) result = self[key] Array(keys).each do |k| break if result.nil? result = result[k] end result end |
#to_h ⇒ ::Hash Also known as: to_hash
Serialize params to Hash
199 200 201 |
# File 'lib/lotus/action/params.rb', line 199 def to_h @attributes.to_h end |