Has_many relationship able to be placed on one to others?


#1

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.


#2

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.


#3

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.

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?


#4

Michael K. 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.


#5

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.