has_many relationship able to be placed on one to others?

It's time for me to go to bed... but perhaps I'll wake up to a bit of good advice.

I have 3 tables:   registrations   cars   motorcycles

I am trying to define the registration object in this way:   has_many :cars   has_many :motorcycles

Then for the cars and motorcycles I'm saying   belongs_to :registration

Something is quite wrong here. How should I be relating these? I read this tutorial: http://railsguides.phusion.nl/activerecord/association_basics.html

I keep referencing back to this, but I cannot find a relationship that fits.

I'm sure I'm not understanding something properly about how relationships should work. I just can't wrap my head around the "right way" to do things when setting up relationships. Frustrating. Good night all.

hmmm, you don't give enough information. What's the registration about? Is this for some kind of car rental service?

The way you describe it, a car could only belong to a single registration. Another thing missing is the customer who makes the registration.

If it's like a car rental, then the registration should be polymorphic and either belong to a car or motorcycle.

registration: belongs_to :registrateable, :polymorphic => true belongs_to :customer # it needs a registrateable_id column in which you store the car or motorcycle id # and a registrateable_type column in which Rails stores the class

Can you say registrateable? I'm not native english, maybe there is a better word? registerable?

Cars and motorcycles each get: has_many :registrations, :as => :registrateable

This way you could get as many links between customers and cars as you want.

hmmm, you don't give enough information. What's the registration about? Is this for some kind of car rental service?

I sure didn't. 3:30am was late for me. :slight_smile:

It is a warranty registration where many different products need to be registered. Each product shares some of the same characteristics, date_registered, dealer_purchased_from, etc... those are kept in the registrations table. But each has it's own unique qualities that we need to track. Perhaps a serial_number and model_number and power_pack_sn for one product. The other might have a serial_number and a blade_sn, for instance.

The way you describe it, a car could only belong to a single registration. Another thing missing is the customer who makes the registration.

If it's like a car rental, then the registration should be polymorphic and either belong to a car or motorcycle.

registration: belongs_to :registrateable, :polymorphic => true belongs_to :customer # it needs a registrateable_id column in which you store the car or motorcycle id # and a registrateable_type column in which Rails stores the class

Can you say registrateable? I'm not native english, maybe there is a better word? registerable?

Registerable is in fact a word. :slight_smile:

Cars and motorcycles each get: has_many :registrations, :as => :registrateable

This way you could get as many links between customers and cars as you want.

I don't think this relationship would work. Because we are dealing with serialized inventory. So product A is really an assembly that consists of several different serialized parts and can only be registered once to 1 customer. Product B is also an assembly that consists of several different serialized parts that can only be registered to a single customer. The customer can have many different products all with unique registrations. Does that help?

Michael Kahle wrote:

I don't think this relationship would work. Because we are dealing with serialized inventory. So product A is really an assembly that consists of several different serialized parts and can only be registered once to 1 customer. Product B is also an assembly that consists of several different serialized parts that can only be registered to a single customer. The customer can have many different products all with unique registrations. Does that help?

Shows what I know... nothing. I have been struggling with this for the past few hours (slow learner?), but upon further review I believe this is exactly what I need.

I have built the relationships, but now I am trying to find examples on how I would setup the controller for each product to handle the registration.

I'll post again when I know more, but thanks for this. I believe it is precisely the direction I should be going.

Bed time again. Strange how hyper-focused I can be at night.

I've been working off of a post to get me going on understanding how to implement in Rails these polymorphic associations. http://railsforum.com/viewtopic.php?id=5882

I also found this:

Looks promising, but at this level of abstraction I have trouble understanding.

I'm afraid I'm trying to run before I can walk.