Class: Treaty::Entity::Attribute::Option::Modifiers::DefaultModifier
- Defined in:
- lib/treaty/entity/attribute/option/modifiers/default_modifier.rb
Overview
Sets default values for attributes when value is nil.
Usage Examples
Simple mode with static value:
integer :limit, default: 12
string :status, default: "pending"
boolean :active, default: false
Simple mode with dynamic value (Proc):
datetime :created_at, default: -> { Time.current }
string :uuid, default: -> { SecureRandom.uuid }
Advanced mode:
integer :limit, default: { is: 12, message: nil }
Use Cases
-
Response defaults (most common):
response 200 do object :meta do integer :limit, default: 12 integer :page, default: 1 end end # Service returns: { meta: { page: 1 } } # Output: { meta: { page: 1, limit: 12 } } -
Request defaults:
request do string :format, default: "json" end # Input: {} # Service receives: { format: "json" }
Important Notes
- Default is applied ONLY when value is nil
- Empty strings, empty arrays, false are NOT replaced
- Proc defaults are called at transformation time
- Procs receive no arguments
Array and Object Types
NOTE: DO NOT use default: [] or default: {} for array/object types!
Array and object types automatically represent empty collections.
Incorrect:
array :tags, default: [] # Wrong! Redundant
object :meta, default: {} # Wrong! Redundant
Correct:
array :tags # Automatically handles empty array
object :meta # Automatically handles empty object
Advanced Mode
Schema format: { is: value_or_proc, message: nil }
Instance Method Summary collapse
-
#transform_value(value, _root_data = {}) ⇒ Object
Applies default value if current value is nil Empty strings, empty arrays, and false are NOT replaced.
-
#validate_schema! ⇒ void
Validates schema (no validation needed) Default value can be any type.
Methods inherited from Base
#initialize, #target_name, #transforms_name?, #validate_value!
Constructor Details
This class inherits a constructor from Treaty::Entity::Attribute::Option::Base
Instance Method Details
#transform_value(value, _root_data = {}) ⇒ Object
Applies default value if current value is nil Empty strings, empty arrays, and false are NOT replaced
86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/treaty/entity/attribute/option/modifiers/default_modifier.rb', line 86 def transform_value(value, _root_data = {}) # Only apply default if value is nil # Empty strings, empty arrays, false are NOT replaced return value unless value.nil? default_value = option_value # If default value is a Proc, call it to get the value if default_value.is_a?(Proc) default_value.call else default_value end end |
#validate_schema! ⇒ void
This method returns an undefined value.
Validates schema (no validation needed) Default value can be any type
75 76 77 78 |
# File 'lib/treaty/entity/attribute/option/modifiers/default_modifier.rb', line 75 def validate_schema! # Schema structure is already normalized by OptionNormalizer. # Default value can be any type, so nothing specific to validate here. end |