Hey Doug,

i believe this is the line that was confusing you?

person_type.constantize.find(*args)


first, all of what i wrote was model code, and yes, you should break up 
the two classes into two separate model files, or really, three: 
Person.rb, Client.rb, and Prospect.rb.

Ok, so in that one line, person_type is a string.  rails mixes in a 
function to the String class called "constantize" that changes a string 
into an actual program token,

so, if person_type is "Client" then person_type.constantize is the 
actual Programming token Client.  As long as you define the Client 
class, rails will then interpret the above line as

Client.find(*args)

OR

Prospect.find(*args)

depending on the string passed into abstract_find.


The reason i have *args is because it is what the ActiveRecord API 
specificies as the argument to find - (basically all arguments passed to 
ActiveRecord find are rolled up into an array, which it then figures out 
what to do with)

so, the above code would allow you to, in your controller, say something 
like,


@person = Person.abstract_find("Client", [normal find arguments go 
here])

or

@person = Person.abstract_find("Prospect", [normal find arguments go 
here])


the real power comes when you basically let the actual type be 
dynamically determined by the program/user at run time:

@person = Person.abstract_find(specified_person_type, [normal find 
arguments go here])


I know you had said that you had pretty much figured it out, but i 
thought this might still be useful. hope it is!

-Gabe


Doug Jolley wrote:
>> 6: � else
>> 7: � � nil
>> 8: � end
>> 9: end
> 
> I really wish that I understood your suggestion especially because it
> may be what works.  I have taken the liberty of adding line numbers.
> Basically, I understand the code except for line 5.  I have no idea
> what you are doing there.  I'm not sure what the person_type and *args
> are that you are passing to abstract_find.  Part of my confusion may
> stem from the fact that there does not seem to be and 'end' for your
> class definition.  So, I'm not altogether clear on whether lines 3
> through 9 are suggested model code or suggested controller code.
> Could you please clarify?  I do appreciate your suggestion and I have
> high hopes for it being my salvation. Thanks.
> 
>        ... doug

-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to