On Nov 16, 8:30 am, Frederick Cheung <[email protected]>
wrote:
> On Nov 16, 2:52 am, Lille <[email protected]> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.