On Nov 16, 8:30 am, Frederick Cheung <frederick.che...@gmail.com> wrote: > On Nov 16, 2:52 am, Lille <lille.pengu...@gmail.com> wrote:> Hey, > > > I want custom errors.as_json behavior from my implementation of > > ActiveModel and with inheritance! > > > So how do I do something like shown in the following pseudo? > > Ruby doesn't work that way. You'd need to override to_json on the > ActiveModel::Errors class. if you want to be able to have different > classes have an errors object that behave in different ways then you > could try subclassing ActiveModel::Errors and have the errors method > on your object return an instance of that subclass rather than an > instance of ActiveModel::Errors >
yet another option would be to redefine the errors method to be def errors super.tap {|e| e.extend ExtraErrorsBehaviour} end where ExtraErrorsBehaviour is a module that overrides some of the methods on the errors object (I vaguely recall an railsconf talk a long time ago by the jruby guys saying that calling extend forces ruby to dump its method caches, i.e. calling extend a lot will slow you down a bit but I've no idea if that applies to ruby 1.9.x) Fred > > > > > module A > > include ActiveModel > > > def errors.to_json > > "blow" > > end > > end > > > module B > > include A > > > def errors.to_json > > "go " + super > > end > > end > > > So far, I've been fooling around using instance_eval on errors in A, > > but I can't get inheritance from that in B. > > > Lille -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.