Module: PhModel

Extended by:
ActiveSupport::Autoload, ActiveSupport::Concern
Includes:
ActiveAttr::AttributeDefaults, ActiveAttr::BasicModel, ActiveAttr::MassAssignment, ActiveAttr::QueryAttributes, Concerns::AttributeNestedValidation, Concerns::AttributeOfArrayTypeInitialization, Concerns::AttributeRequiredValidation, Concerns::AttributeTypeValidation, Concerns::InitializeCallback, Concerns::ValidatedFactory
Defined in:
lib/ph_model.rb,
lib/ph_model/version.rb,
lib/ph_model/concerns.rb,
lib/ph_model/validation_failed.rb,
lib/ph_model/concerns/validated_factory.rb,
lib/ph_model/concerns/initialize_callback.rb,
lib/ph_model/concerns/attribute_type_validation.rb,
lib/ph_model/concerns/attribute_nested_validation.rb,
lib/ph_model/concerns/attribute_required_validation.rb,
lib/ph_model/concerns/attribute_of_array_type_initialization.rb

Overview

PayrollHero’s mashup of ActiveModel and ActiveAttr with some of our own twists

Defined Under Namespace

Modules: Concerns Classes: ValidationFailed

Constant Summary collapse

VERSION =
'1.2.0'.freeze

Instance Method Summary collapse

Methods included from Concerns::AttributeOfArrayTypeInitialization

#initialize_array_type_attributes

Methods included from Concerns::AttributeNestedValidation

#check_one, #format_nested_attribute_name, #validate_nested_attributes

Methods included from Concerns::AttributeTypeValidation

#ensure_typed_attributes_class, #type_match?, #type_summary

Methods included from Concerns::AttributeRequiredValidation

#validate_required_attributes

Methods included from Concerns::InitializeCallback

#initialize

Instance Method Details

#as_jsonObject



34
35
36
37
38
39
40
# File 'lib/ph_model.rb', line 34

def as_json(*)
  {}.tap do |hash|
    self.class.attributes.each do |attribute_name, _info|
      hash[attribute_name] = send(attribute_name).as_json
    end
  end
end

#assign_attributes(new_attributes, options = {}) ⇒ Object

Monkey patch #assign_attributes inside ActiveAttr::MassAssignment so that it doesn’t blindly ignore attempting to assign attributes which do not exist

TODO: try to submit something upstream to deal with this



52
53
54
55
56
57
58
59
60
61
# File 'lib/ph_model.rb', line 52

def assign_attributes(new_attributes, options = {})
  sanitized_new_attributes = sanitize_for_mass_assignment_if_sanitizer new_attributes, options

  sanitized_new_attributes.each do |name, value|
    writer = "#{name}="
    # originally:
    # send writer, value if respond_to? writer
    send writer, value
  end if sanitized_new_attributes
end

#inspectObject



42
43
44
45
# File 'lib/ph_model.rb', line 42

def inspect
  attr_info = self.class.attributes.map { |attr_name, info| "#{attr_name}: #{self.send(attr_name).inspect}" }
  "#<#{self.model_name} #{attr_info.join(', ')}>"
end