Tobias L. Maier

Joined

110 Experience
1 Lesson Completed
0 Questions Solved

Activity

Posted in Normalizes method in ActiveRecord Discussion

This is a great feature.

The greatest disadvantage is, that it only works with ActiveRecord and not with ActiveModel.
This means you cannot use it for Form Objects or other, non-ActiveRecord-baked classes.
I opened a feature request. Hopefully, it will be migrated to ActiveModel some day.
See https://discuss.rubyonrails.org/t/proposal-activemodel-normalization/85405

I also wrote a small blog post about how to increase reusability and testability of this.
See https://tobiasmaier.info/posts/2024/03/24/reusability-for-active-record-normalize.html

This would lead to the introduction of normalization pipelines:

class User < ActiveRecord::Base
  normalizes :email, with: PipelineNormalizer.new(StripNormalizer, BlankNormalizer, -> { _1&.downcase })
end