Koz and Ryan,

Now that you point it out, I see how #method_missing calls find, then
find thinks I'm retarded and over writes my method by doing a class
eval. Thus removing my original code.

Am I figuring that right?

I've always had trouble generating aliases to singleton methods.

I seem to recall the following syntax doesn't work
alias self.old_name self.new_name

but I might be confusing trying

alias old_name self.new_name

Thank you for your insights,
Chris Lundquist



On Nov 9, 2:37 pm, Michael Koziarski <[email protected]> wrote:
> > May I suggest aliasing the method instead of trying to call super?
> > alias_method :old_find_by_name, :find_by_name
> > def Person.find_by_name(*params)
> >   params.first.chop! if params.first.last == "."
> >   old_find_by_name(params)
> > end
>
> super won't work here because the method isn't defined on a parent of
> Person, it's defined on person itself.  So what's happening is that
> the call to method missing is generating a *new* implementation of
> find_by_name which simply does the find, without your changes.
>
> We could fix this for rails 3.0 by moving those generated methods from
> Person to a module included in person, but for 2.3 you'll have to do
> as Ryan suggests and use aliasing, or just call
> all(:conditions=>{:first_name=>params.first}) instead of super.
>
> --
> Cheers
>
> Koz
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" 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-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to