Class: SimpleParams::Params

Inherits:
Object
  • Object
show all
Extended by:
ActiveModel::Naming
Includes:
ActiveModel::Validations, DateTimeHelpers, HasAttributes, HasTypedParams, HashHelpers, RailsHelpers, StrictParams, Validations
Defined in:
lib/simple_params/params.rb

Direct Known Subclasses

NestedParams

Constant Summary

Constants included from HasTypedParams

HasTypedParams::TYPES

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Validations

#valid?, #validate!

Constructor Details

#initialize(params = {}) ⇒ Params

Returns a new instance of Params.



121
122
123
124
125
126
127
128
129
130
131
# File 'lib/simple_params/params.rb', line 121

def initialize(params={})
  set_strictness

  @original_params = hash_to_symbolized_hash(params)
  define_attributes(@original_params)

  # Nested Classes
  @nested_classes = nested_classes.keys

  set_accessors(params)
end

Class Attribute Details

.optionsObject

Returns the value of attribute options.



18
19
20
# File 'lib/simple_params/params.rb', line 18

def options
  @options
end

Instance Attribute Details

#original_paramsObject Also known as: original_hash, raw_params

Returns the value of attribute original_params.



117
118
119
# File 'lib/simple_params/params.rb', line 117

def original_params
  @original_params
end

Class Method Details

.api_pie_documentationObject



24
25
26
# File 'lib/simple_params/params.rb', line 24

def api_pie_documentation
  SimpleParams::ApiPieDoc.new(self).build
end

.model_nameObject



20
21
22
# File 'lib/simple_params/params.rb', line 20

def model_name
  ActiveModel::Name.new(self)
end

.nested_array(name, opts = {}, &block) ⇒ Object



52
53
54
55
# File 'lib/simple_params/params.rb', line 52

def nested_array(name, opts={}, &block)
  klass = NestedParams.define_new_array_class(self, name, opts, &block)
  add_nested_class(name, klass, opts)
end

.nested_arraysObject



41
42
43
# File 'lib/simple_params/params.rb', line 41

def nested_arrays
  nested_classes.select { |key, klass| klass.array? }
end

.nested_classesObject



33
34
35
# File 'lib/simple_params/params.rb', line 33

def nested_classes
  @nested_classes ||= {}
end

.nested_hash(name, opts = {}, &block) ⇒ Object Also known as: nested_param, nested



45
46
47
48
# File 'lib/simple_params/params.rb', line 45

def nested_hash(name, opts={}, &block)
  klass = NestedParams.define_new_hash_class(self, name, opts, &block)
  add_nested_class(name, klass, opts)
end

.nested_hashesObject



37
38
39
# File 'lib/simple_params/params.rb', line 37

def nested_hashes
  nested_classes.select { |key, klass| klass.hash? }
end

.param(name, opts = {}) ⇒ Object



28
29
30
31
# File 'lib/simple_params/params.rb', line 28

def param(name, opts={})
  define_attribute(name, opts)
  add_validations(name, opts)
end

Instance Method Details

#errorsObject



153
154
155
156
157
158
159
160
# File 'lib/simple_params/params.rb', line 153

def errors
  nested_class_hash = {}
  @nested_classes.each do |param|
    nested_class_hash[param.to_sym] = send(param)
  end

  @errors ||= SimpleParams::Errors.new(self, nested_class_hash)
end

#to_hashObject



133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/simple_params/params.rb', line 133

def to_hash
  hash = {}
  attributes.each do |attribute|
    raw_attribute = send(attribute)
    if raw_attribute.is_a?(SimpleParams::Params)
      hash[attribute] = send(attribute).to_hash
    elsif raw_attribute.is_a?(Array)
      attribute_array = []
      raw_attribute.each do |r_attr|
        attribute_array << r_attr.to_hash
      end
      hash[attribute] = attribute_array
    else
      hash[attribute] = send(attribute)
    end
  end

  hash
end