Sorry for replying an old post =(.
But, I am moving an app from Rails 4.1.x to Rails 4.2.4 and  I am with 
error wher I use  

ActiveModel::Erros.new(object) when the object it is not an activemodel. I 
am looking on the rails source code and the ActiveModel::Error has changed 
from 4.1.x to 4.2.4 
https://github.com/rails/rails/blob/v4.2.4/activemodel/lib/active_model/errors.rb#L412
 
with this PR. This method on the line 437 
(https://github.com/rails/rails/blob/v4.2.4/activemodel/lib/active_model/errors.rb#L437)
 
is trying to look for the method model_name from the instance, but in the 
version 4.1.x it looks from the class. It was changed on this commit: 
https://github.com/rails/rails/commit/6b0e834a194d112585f41deba0a40780d68e38c6.

 I know that I can fix it by creating a module that I can use on my class 
with this method using the ActiveModel::Naming. Am I wrong in use 
ActiveModel::Error without an activemodel? And the older way is not right 
in use the method from class?

Thanks so much, and sorry for opening an old topic again =/
Em segunda-feira, 23 de junho de 2014 21:29:38 UTC-3, Amiel Martin escreveu:
>
> Excellent start Yuki!
>
> I started working on this as well on Friday and came to pretty much the 
> same solution.
>
> I would have just left my changes in favor of Yuki's PR, but I think is 
> misses the point.
> The idea is for rails to stop calling x.class.model_name, and only call 
> x.model_name.
>
> I've started another PR making those changes: 
> https://github.com/rails/rails/pull/15889 
> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Frails%2Frails%2Fpull%2F15889&sa=D&sntz=1&usg=AFQjCNEadF9J6XOTwpgxkA8PMuNEASIgsQ>
>
> There's still two things to address:
>
>    1. I've left a few REVIEW comments. I'm looking for feedback there, 
>    but will remove them and rebase soon enough.
>    2. I'm still working on a warning to address the issue that Andy 
>    Jeffries brought up in this thread.
>    I'm thinking it should just be a warning. I'm digging into it now; 
>    does anyone know of an example of rails currently doing this?
>
>
> Thanks!
>
> -Amiel
>
>
> On Mon, Jun 23, 2014 at 6:42 AM, Yuki Nishijima <ma...@yukinishijima.net 
> <javascript:>> wrote:
>
>> Pull request sent: https://github.com/rails/rails/pull/15871
>>
>>
>> On Fri, Jun 20, 2014 at 7:15 AM, DHH <da...@loudthinking.com 
>> <javascript:>> wrote:
>>
>>> I'm very much in favor of this as well. Please make it so. To address 
>>> Andy's concerns, we should have proper error messages if this is 
>>> overwriting an attribute of the same name. But it's too convenient not to 
>>> have.
>>>
>>>
>>> On Friday, May 30, 2014 8:11:53 PM UTC+2, Jeremy Friesen wrote:
>>>>
>>>> Following up on https://github.com/rails/rails/issues/15428, with 
>>>> adjustments.
>>>>
>>>> Throughout the Rails code there are a few references to 
>>>> `object.class.model_name`. Instead of always pushing this up to the class, 
>>>> it makes sense to me that we ask the model for its model_name.
>>>>
>>>> This might obviate the need for the dubious 
>>>> ActionController::ModelNaming#model_name_from_record_or_class,  
>>>> https://github.com/rails/rails/blob/master/actionpack/
>>>> lib/action_controller/model_naming.rb
>>>>
>>>>
>>>>
>>>>
>>>> module ActionController
>>>>   module ModelNaming
>>>>
>>>>
>>>>     # Converts the given object to an ActiveModel compliant one.
>>>>
>>>>
>>>>
>>>>     def convert_to_model(object)
>>>>       object.respond_to?(:to_model) ? object.to_model : object
>>>>
>>>>
>>>>     end
>>>>
>>>>     def model_name_from_record_or_class(record_or_class)
>>>>
>>>>
>>>>       (record_or_class.is_a?(Class) ? record_or_class : 
>>>> convert_to_model(record_or_class).class).model_name
>>>>
>>>>
>>>>     end
>>>>   end
>>>>
>>>>
>>>> end
>>>>
>>>>
>>>> Example:
>>>>
>>>> class Foo
>>>>   extend ActiveModel::Naming
>>>>   def model_name
>>>>     class.model_name
>>>>   endend
>>>> Foo.respond_to?(:model_name)=> true
>>>> Foo.new.respond_to?(:model_name)=> true
>>>> Foo.model_name == Foo.new.model_name=> true
>>>>
>>>> -- 
>>> 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-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