Steps to add StructuredParams to a Rails application.
Add the gem to your Gemfile:
gem 'structured_params'bundle installOr install it directly:
gem install structured_paramsRegister the custom types in a Rails initializer:
# config/initializers/structured_params.rb
StructuredParams.register_typesThis registers the :object and :array types with ActiveModel::Type.
You can configure StructuredParams in the same initializer:
# config/initializers/structured_params.rb
StructuredParams.register_types
StructuredParams.configure do |config|
# Controls how array indices appear in human attribute names and full_messages.
# 0 (default) — 0-based: "Hobbies 0 Name can't be blank"
# 1 — 1-based: "Hobbies 1 Name can't be blank"
config.array_index_base = 1
end| Option | Default | Description |
|---|---|---|
array_index_base |
0 |
Index base for array elements in error messages (0 or 1) |
Note:
array_index_baseaffectshuman_attribute_nameand thereforefull_messages. For APIs returning raw error keys (the typical pattern), this setting has no visible effect.
To avoid naming conflicts with existing code, register the types under custom names:
StructuredParams.register_types_as(
object_name: :structured_object,
array_name: :structured_array
)
# Then use in your parameter classes
class UserParams < StructuredParams::Params
attribute :address, :structured_object, value_class: AddressParams
attribute :hobbies, :structured_array, value_class: HobbyParams
end