Finally, it was merged.
You can read about how to use it 
on https://cowbell-labs.com/2015-01-22-active-model-errors-details.html

W dniu czwartek, 8 stycznia 2015 16:59:37 UTC+1 użytkownik Tsyren napisał:
>
> Seems nice, +1 vote for that.
>
> Thanks
> Tsyren
>
> On Sun, Jan 4, 2015 at 10:31 AM, Szymon Nowak <szi...@gmail.com 
> <javascript:>> wrote:
>
>> I don't think numbers are a good idea in this case, as symbols map nicely 
>> to existing error codes in Rails (
>> http://guides.rubyonrails.org/i18n.html#error-message-interpolation).
>>
>> My friend just created a pull request that adds error codes to AM:Errors 
>> - https://github.com/rails/rails/pull/18322. It's backward compatible, 
>> but methods like "<<", "[]=" etc. don't add errors to "codes" hash 
>> (however, they never actually did work correctly, as error messages added 
>> this way are not translated).
>>
>> It might be possible to refactor AM::Errors completely and build 
>> "messages" based on "codes" instead of managing both of them.
>>
>> On Sunday, 4 January 2015 05:48:26 UTC+1, Almas Sapargali wrote:
>>>
>>> What do you think about using numbers for error codes? For example on 
>>> ios side errors may have message (description) and code (among other 
>>> things). 
>>> On Sun, Jan 4, 2015 at 7:24 AM pathé Sene <pathe...@gmail.com> wrote:
>>>
>>>> +1
>>>>
>>>> 2015-01-02 14:33 GMT+00:00 Jason Fleetwood-Boldt <te...@datatravels.com
>>>> >:
>>>>
>>>>>
>>>>> +1 for separation of concerns
>>>>>
>>>>>
>>>>>
>>>>> On Jan 1, 2015, at 5:26 PM, Szymon Nowak <szi...@gmail.com> wrote:
>>>>>
>>>>> Hey, 
>>>>>
>>>>> It's been a while, but once again I'm working on an API-only Rails app 
>>>>> and I have the same problem again :)
>>>>>
>>>>> Now that Rails 4.2 has been released and work on 5.0 has started, 
>>>>> maybe it would be a good time to change ActiveModel::Errors API, so that 
>>>>> it 
>>>>> would allow to return translated error messages (like it does right now) 
>>>>> *or* error codes (e.g. :invalid, :missing) that can be translated to any 
>>>>> language by the app that's using the API?
>>>>>
>>>>> On Wednesday, 26 September 2012 14:00:26 UTC+2, Szymon Nowak wrote:
>>>>>>
>>>>>> On Tuesday, 25 September 2012 19:26:40 UTC+2, Aaron Patterson wrote:
>>>>>>
>>>>>>> On Tue, Sep 25, 2012 at 06:39:58AM -0700, Szymon Nowak wrote: 
>>>>>>> > There are few issues with the current ActiveModel::Errors class. 
>>>>>>> > 
>>>>>>> > Firstly, when an error is added to ActiveModel::Errors class via 
>>>>>>> #add 
>>>>>>> > method 
>>>>>>> > (https://github.com/rails/rails/blob/master/activemodel/lib/
>>>>>>> active_model/errors.rb#L294) 
>>>>>>> > its translation is added. It should not be translated when being 
>>>>>>> added, but 
>>>>>>> > only when being read. 
>>>>>>> > 
>>>>>>> > The second issue is a bit bigger. We'd like to create error 
>>>>>>> responses in 
>>>>>>> > our API similar to GitHub: 
>>>>>>> > 
>>>>>>> > { 
>>>>>>> >    "message": "Validation Failed", 
>>>>>>> >    "errors": [ 
>>>>>>> >      { 
>>>>>>> >        "resource": "Issue", 
>>>>>>> >        "field": "title", 
>>>>>>> >        "code": "missing_field" 
>>>>>>> >      } 
>>>>>>> >    ] 
>>>>>>> >  } 
>>>>>>> > 
>>>>>>> > 
>>>>>>> > Currently it's impossible to figure out which validations actually 
>>>>>>> failed 
>>>>>>> > for a given field, as AM::Errors provides only field name and 
>>>>>>> translated 
>>>>>>> > error message. We've got a simple workaround for this issue: 
>>>>>>> > 
>>>>>>> > module ActiveModel 
>>>>>>> >   class Errors 
>>>>>>> >     def error_types 
>>>>>>> >       @_error_types ||= Hash.new{|hash,k| hash[k] = []} 
>>>>>>> >     end 
>>>>>>> > 
>>>>>>> >     def add_with_save_names(attribute, message = nil, options = 
>>>>>>> {}) 
>>>>>>> >       message ||= :invalid 
>>>>>>> >       message = message.call if message.is_a?(Proc) 
>>>>>>> >       error_types[attribute] << message 
>>>>>>> >       add_without_save_names(attribute, message, options) 
>>>>>>> >     end 
>>>>>>> > 
>>>>>>> >     alias_method_chain :add, :save_names 
>>>>>>> >   end 
>>>>>>> > end 
>>>>>>> > 
>>>>>>> > 
>>>>>>> > This solution is far from perfect, but it's relatively simple and 
>>>>>>> so far 
>>>>>>> > works for us. 
>>>>>>> > 
>>>>>>> > The best solution would be to actually build a structure similar 
>>>>>>> to GitHub 
>>>>>>> > response - from that structure it would be trivial to build 
>>>>>>> #full_messages 
>>>>>>> > and similar methods and it would provide a lot of additional info 
>>>>>>> which 
>>>>>>> > would be extremely useful for creating APIs. 
>>>>>>>
>>>>>>> Seems good.  Can you work on a patch and send a PR?  If we can 
>>>>>>> maintain 
>>>>>>> backwards compat, I am happy. 
>>>>>>>
>>>>>>
>>>>>> I'll make all current methods to return the same result as they do 
>>>>>> now (even #to_json and similar methods) and use new structure only 
>>>>>> internally. The only question is how this new structure should be 
>>>>>> accessed 
>>>>>> via ActiveModel object - object.errors.errors? :)
>>>>>>
>>>>>> BTW. Aaron, if you have a while could you check PR about 
>>>>>> ActionDispatch::ParamsParser (https://github.com/rails/rail
>>>>>> s/pull/7444)?
>>>>>>
>>>>>
>>>>> -- 
>>>>> 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 rubyonrails-co...@googlegroups.com.
>>>>> To post to this group, send email to rubyonra...@googlegroups.com.
>>>>> Visit this group at http://groups.google.com/group/rubyonrails-core.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>>
>>>>> ----
>>>>>
>>>>> Jason Fleetwood-Boldt
>>>>> te...@datatravels.com
>>>>> http://www.jasonfleetwoodboldt.com/writing
>>>>>
>>>>> All material © Jason Fleetwood-Boldt 2014. Public conversations may be 
>>>>> turned into blog posts (original poster information will be made 
>>>>> anonymous). Email ja...@datatravels.com with questions/concerns about 
>>>>> this.
>>>>>  
>>>>>  -- 
>>>>> 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 rubyonrails-co...@googlegroups.com.
>>>>> To post to this group, send email to rubyonra...@googlegroups.com.
>>>>> Visit this group at http://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 rubyonrails-co...@googlegroups.com.
>>>> To post to this group, send email to rubyonra...@googlegroups.com.
>>>> Visit this group at http://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 rubyonrails-co...@googlegroups.com <javascript:>.
>> To post to this group, send email to rubyonra...@googlegroups.com 
>> <javascript:>.
>> Visit this group at http://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 rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to