Any reason you can't use model.errors.messages ? On Tuesday, December 12, 2017 at 6:01:44 AM UTC-6, [email protected] wrote: > > I happen to implemented a gem for this, and only now realized someone > having the same issue as me. > > Repo: https://github.com/lulalala/adequate_errors > Blog post: http://lulalala.logdown.com/posts/2909828-adequate-errors > > Would it be possible to take some of these to Rails 6 (with the intention > to break compatibility?) > > Rafael Mendonça França於 2016年2月29日星期一 UTC+8下午11時58分01秒寫道: >> >> I'm positive for this enhancement. The type information is already >> retained in Rails 5 but having real object could be real handy. >> >> On Mon, Feb 29, 2016 at 12:47 PM Evan Prothro <[email protected]> >> wrote: >> >>> I love the concept and usability of an ActiveModel::Errors paradigm. >>> However, I and others often find it frustrating to work with the >>> implementation. >>> >>> >>> I'd love to see a proper ActiveModel::Error object, where the errors >>> attribute of a model including ActiveModel::Errors was an Enumerator of >>> these objects. >>> >>> >>> There are various implied benefits and added flexibility that could be >>> introduced in a backwards compatible way later, and immedate benefits. >>> Would love to know what y'all think about this. Happy to implement if >>> desired. >>> >>> >>> >>> <https://gist.github.com/eprothro/5ea12fd2b0527baf0090#immediate-benefits>Immediate >>> >>> Benefits >>> >>> >>> <https://gist.github.com/eprothro/5ea12fd2b0527baf0090#the-error-type-could-be-retained>The >>> >>> error type could be retained >>> >>> APIs we build prefer to return Error objects to clients with the >>> following schema: >>> >>> { >>> attribute: "The model attribute to which the error applies. If blank, >>> the error applies generically to the base model.", >>> type: "The type of error encountered with the model attribute or >>> model." >>> messsage: "An internationalized message that can be displayed to a >>> user.", >>> } >>> >>> In particular, the type attribute allows clients to couple any logic >>> they need on the error attribute and type, not themessage, which should >>> be able to change with business/product needs. >>> >>> With a proper ActiveModel::Error object, this is easily done. With the >>> current enumerable design, this is not a clean extension to make >>> <https://gist.github.com/eprothro/d58d143729987c6c8834>. >>> >>> >>> <https://gist.github.com/eprothro/5ea12fd2b0527baf0090#the-error-message-can-be-lazily-looked-up>The >>> >>> error message can be lazily looked up >>> >>> Currently, the message interpolation is looked up when the error is >>> added to the model. This isn't necessarry, and is easily lazily evaluated >>> when a derived attribute on an Error object. >>> >>> >>> >>> <https://gist.github.com/eprothro/5ea12fd2b0527baf0090#other-enhancements-easily-enabled>Other >>> >>> Enhancements easily enabled >>> >>> >>> <https://gist.github.com/eprothro/5ea12fd2b0527baf0090#accessing-the-attribute-value-more-cleanly>Accessing >>> >>> the attribute value more cleanly >>> >>> error = model.errors.first >>> error.attribute >>> => :username >>> error.attribute_value >>> => 'eprothro' >>> >>> >>> >>> <https://gist.github.com/eprothro/5ea12fd2b0527baf0090#easier-custom-interpolation-parameters>Easier >>> >>> custom interpolation parameters >>> >>> # en.yml >>> errors: >>> models: >>> user: >>> attributes: >>> username: >>> taken: "%{value} has already been taken." >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Ruby on Rails: Core" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at https://groups.google.com/group/rubyonrails-core. >>> For more options, visit https://groups.google.com/d/optout. >>> >>
-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/rubyonrails-core. For more options, visit https://groups.google.com/d/optout.
