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
- #as_json ⇒ Object
-
#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.
- #inspect ⇒ Object
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
Methods included from Concerns::InitializeCallback
Instance Method Details
#as_json ⇒ Object
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, = {}) sanitized_new_attributes = sanitize_for_mass_assignment_if_sanitizer new_attributes, 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 |
#inspect ⇒ Object
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 |