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.