I'm not sure of what you need to do but I'll assume that you just want
to create an association between a person and a vehicle of type car or
truck (or whatever).

I am assuming that you have STI built into your vehicles table, with a
column named 'type' that stores the type of vehicle
('Car'/'Truck'/'Whatever'). If you just want to assign a vehicle to
the person I don't see a reason why you should know the type of
vehicle it is.

Based on your code you know the id of the vehicle. Why not do
something simpler?:

person.car = Vehicle.find(params[:id])

You might not know the type of vehicle it is but does it matter?

And going even further, do you really need to retrieve the vehicle
row? I guess that if you can't trust the id beeing an honest value you
should but if you could trust it, couldn't you just do?:

person.vehicle_id = params[:id]

Maybe I am not understanding your need?

On Sep 22, 10:51 am, Heinz Strunk <rails-mailing-l...@andreas-s.net>
wrote:
> Hey,
>
> I've got a polymorphic relation and would like to create an object. How
> is it possible to determine whether its a 'car' or a 'truck'?
>
> A person can owe cars and trucks. I could pass params like the car/truck
> id to the action but that doesn't really help me.
>
> For now I do it like this but I don't like it at all:
> person.cars = Car.find(params[:id]) if params[:type] == "Car"
> person.truck = Truck.find(params[:id]) if params[:type] == "Truck"
>
> This is really not how I want it. Does anyone knows how to solve that
> kind of problem?
>
> Thanks
> --
> Posted viahttp://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 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to