Forum: Ruby on Rails has_many relationship able to be placed on one to others?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
29a0b45cdf0e6b8b93d520e5105bf4ce?d=identicon&s=25 Michael Kahle (geopoliticus)
on 2008-10-23 10:14
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/associa...

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.
2d8132658d56e51f19ace1c68e48b6aa?d=identicon&s=25 Thorsten Mueller (thorsten)
on 2008-10-23 11:36
(Received via mailing list)
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.
29a0b45cdf0e6b8b93d520e5105bf4ce?d=identicon&s=25 Michael Kahle (geopoliticus)
on 2008-10-23 22:43
(Received via mailing list)
> 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.  :)

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.  :)

>
> 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?
29a0b45cdf0e6b8b93d520e5105bf4ce?d=identicon&s=25 Michael Kahle (geopoliticus)
on 2008-10-24 08:30
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.
29a0b45cdf0e6b8b93d520e5105bf4ce?d=identicon&s=25 Michael Kahle (geopoliticus)
on 2008-10-24 11:03
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...
Looks promising, but at this level of abstraction I have trouble
understanding.

I'm afraid I'm trying to run before I can walk.
This topic is locked and can not be replied to.