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:
http://www.pathf.com/blogs/2008/07/drying-up-rails-controllers-polymorphic-and-super-controllers/
Looks promising, but at this level of abstraction I have trouble
understanding.

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