DavyJonesLocker / client_side_validations

Client Side Validations made easy for Ruby on Rails
MIT License
2.69k stars 404 forks source link

Raise on missing translations causes issues in Rails 7.1 #920

Closed tagliala closed 12 months ago

tagliala commented 1 year ago

When config.i18n.raise_on_missing_translations is enabled, Rails 7.1 raises on missing translations also when a translation is not found in a validation error message. This did not happen in 7.0

For some custom validations, like timeliness, client side validations attempts to create a message for "timeliness" error, which is not present.

On Rails 7.0 this did not fail, and the output would have contained a missing translation error

Steps to reproduce*

  1. Add a custom validation without a translation (validates :leave_date, timeliness: { on_or_after: -> { Time.current } })
  2. Open a form with that field

Expected behavior*

Does not fail

Actual behavior*

*** I18n::MissingTranslationData Exception: Translation missing. Options considered were:
- it-IT.activerecord.errors.models.itinerary.attributes.leave_date.timeliness
- it-IT.activerecord.errors.models.itinerary.timeliness
- it-IT.activerecord.errors.messages.timeliness
- it-IT.errors.attributes.leave_date.timeliness
- it-IT.errors.messages.timeliness

System configuration*

Rails version: 7.1

Ruby version: 3.2.2

Client Side Validations version: main

Code snippet from your model of the validations*

  validates :leave_date, timeliness: { on_or_after: -> { Time.current } }

The whole form code from your template*

  = f.input :leave_date, as: :datetime, default: default_leave_date, start_year: Time.current.year, end_year: 1.year.from_now.year, minute_step: 10, ampm: t('time.ampm'), input_html: { class: 'date-time' }, wrapper: :horizontal_form

The resulting HTML*

not needed

Browser's development console output*

Additional JavaScript Libraries*

does not apply

Repository demostrating the issue

https://github.com/diowa/icare/tree/feature/rails-71