I18n.translate wrong number of arguments
Failure/Error: @errors ||= entity.tap(&:valid?).errors.messages.transform_values(&:first)
ArgumentError:
wrong number of arguments (given 2, expected 0..1)
# /usr/local/bundle/gems/i18n-1.12.0/lib/i18n.rb:210:in `translate'
# /usr/local/bundle/gems/activemodel-5.2.8.1/lib/active_model/naming.rb:190:in `human'
# /usr/local/bundle/gems/activemodel-5.2.8.1/lib/active_model/errors.rb:424:in `generate_message'
# /usr/local/bundle/gems/activemodel-5.2.8.1/lib/active_model/errors.rb:454:in `normalize_message'
# /usr/local/bundle/gems/activemodel-5.2.8.1/lib/active_model/errors.rb:298:in `add'
# /usr/local/bundle/gems/activemodel-5.2.8.1/lib/active_model/validations/presence.rb:7:in `validate_each'
# /usr/local/bundle/gems/activemodel-5.2.8.1/lib/active_model/validator.rb:152:in `block in validate'
# /usr/local/bundle/gems/activemodel-5.2.8.1/lib/active_model/validator.rb:149:in `each'
# /usr/local/bundle/gems/activemodel-5.2.8.1/lib/active_model/validator.rb:149:in `validate'
# /usr/local/bundle/gems/activesupport-5.2.8.1/lib/active_support/callbacks.rb:426:in `block in make_lambda'
# /usr/local/bundle/gems/activesupport-5.2.8.1/lib/active_support/callbacks.rb:198:in `block (2 levels) in halting'
# /usr/local/bundle/gems/activesupport-5.2.8.1/lib/active_support/callbacks.rb:606:in `block (2 levels) in default_termi
nator'
# /usr/local/bundle/gems/activesupport-5.2.8.1/lib/active_support/callbacks.rb:605:in `catch'
# /usr/local/bundle/gems/activesupport-5.2.8.1/lib/active_support/callbacks.rb:605:in `block in default_terminator'
# /usr/local/bundle/gems/activesupport-5.2.8.1/lib/active_support/callbacks.rb:199:in `block in halting'
# /usr/local/bundle/gems/activesupport-5.2.8.1/lib/active_support/callbacks.rb:513:in `block in invoke_before'
# /usr/local/bundle/gems/activesupport-5.2.8.1/lib/active_support/callbacks.rb:513:in `each'
# /usr/local/bundle/gems/activesupport-5.2.8.1/lib/active_support/callbacks.rb:513:in `invoke_before'
# /usr/local/bundle/gems/activesupport-5.2.8.1/lib/active_support/callbacks.rb:131:in `run_callbacks'
# /usr/local/bundle/gems/activesupport-5.2.8.1/lib/active_support/callbacks.rb:816:in `_run_validate_callbacks'
# /usr/local/bundle/gems/activemodel-5.2.8.1/lib/active_model/validations.rb:409:in `run_validations!'
# /usr/local/bundle/gems/activemodel-5.2.8.1/lib/active_model/validations.rb:339:in `valid?'
# ./lib/convenient_service/service/plugins/has_result_params_validations/using_active_model_validations/middleware.rb:28
:in `errors'
# ./lib/convenient_service/service/plugins/has_result_params_validations/using_active_model_validations/middleware.rb:10
:in `next'
This exception may happen when HasJSendResultParamsValidations::UsingActiveModelValidations
plugin is used in an environemnt with Ruby 3+ and Rails 5.
It is caused by separation of positional and keyword arguments in Ruby 3.0.
Check correct Delegation with Ruby 2.6, 2.7 and 3.0 and I18n.translate for more details.
Currenty, there is no a simple workaround for it.
Actually, you may choose any of the following two options:
-
Or remove
HasJSendResultParamsValidations::UsingActiveModelValidations
plugin from config
(do not forget to remove validates calls as well).
concerns do
delete Plugins::Service::HasJSendResultParamsValidations::UsingActiveModelValidations::Concern
end
middlewares :result do
delete Plugins::Service::HasJSendResultParamsValidations::UsingActiveModelValidations::Middleware
end