Module: ActiveRemote::AttributeDefaults
- Extended by:
- ActiveSupport::Concern
- Included in:
- Base
- Defined in:
- lib/active_remote/attribute_defaults.rb
Overview
AttributeDefaults allows defaults to be declared for your attributes
Defaults are declared by passing the :default option to the attribute class method. If you need the default to be dynamic, pass a lambda, Proc, or any object that responds to #call as the value to the :default option and the result will calculated on initialization. These dynamic defaults can depend on the values of other attributes when those attributes are assigned using MassAssignment or BlockInitialization.
Instance Method Summary collapse
-
#apply_defaults(defaults = attribute_defaults) ⇒ Object
Applies the attribute defaults.
-
#attribute_defaults ⇒ Object
Calculates the attribute defaults from the attribute definitions.
-
#initialize ⇒ Object
Applies attribute default values.
Instance Method Details
#apply_defaults(defaults = attribute_defaults) ⇒ Object
Applies the attribute defaults
Applies all the default values to any attributes not yet set, avoiding any attribute setter logic, such as dirty tracking.
56 57 58 59 60 61 62 |
# File 'lib/active_remote/attribute_defaults.rb', line 56 def apply_defaults(defaults=attribute_defaults) @attributes ||= {} defaults.each do |name, value| # instance variable is used here to avoid any dirty tracking in attribute setter methods @attributes[name] = value if @attributes[name].nil? end end |
#attribute_defaults ⇒ Object
Calculates the attribute defaults from the attribute definitions
75 76 77 |
# File 'lib/active_remote/attribute_defaults.rb', line 75 def attribute_defaults attributes_map { |name| _attribute_default name } end |
#initialize ⇒ Object
Applies attribute default values
81 82 83 84 |
# File 'lib/active_remote/attribute_defaults.rb', line 81 def initialize(*) super apply_defaults end |