之前在这有发过两篇文(1, 2),关于想改善 ActiveModel#errors。后来 Rails 团队终于把改变给加进去 master 了,预计今年会以 Rails 6.1 的方式推出。在此想先介绍本次改变有什么 deprecation 跟 breaking changes。也希望在 6.1rc1 推出前,搜集一下大家的意见看看如何改进~
ActiveModel#errors
https://code.lulalala.com/2020/0619-1013.html
原来前后经历了三年。
哈哈岁月不饶人,感谢你不时还转贴关于这个的新闻^^
嗯 一直在做的内容 特别是前后端分离的时候 非常的不想要 prefix attribute name. 如果是自定义验证方法 通过errors.add() 方法添加错误信息 其实是可以包装错误 采用 I18n 的方式输出我们想要的错误信息的
errors.add()
# 例如 erros.details #=> {:customer=>[{:error=>:blank}], :identification_type=>[{:error=>:blank}]} errors.add(:identification_type, :custom_error, message: "Custom Error") # => ["can't be blank", "Custom Error"] # 再次输出 errors.details #=> {:customer=>[{:error=>:blank}], :identification_type=>[{:error=>:blank}, {:error=>:custom_error}]} errors.messages # => {:customer=>["must exist"], :identification_type=>["can't be blank", "Custom Error"]}
我的想法是采用 I18n 的方式包装输出 需要的错误信息
非常的不想要 prefix attribute name
Rails 6 可以 override model attribute 级别的 error format https://blog.bigbinary.com/2019/04/22/rails-6-allows-to-override-the-activemodel-errors-full_message-format-at-the-model-level-and-at-the-attribute-level.html