Multiple associations to the same model

I have a model which contains a large dataset which is unmodifiable. I
contains a relation of ids to names for several item types lumped
together, not idea I know.

I have a model which needs two associations, both of which will link to
this model above, but with different names.

For example, lets say the dataset contains a list of furniture. Ids 1-10
might be tables and 11-20 might be chairs.

Lets say the other model defines a room. A room should be able to have
one table and one chair. Unfortunately, as they both refer to the same
model, I'm a loss on how to do it. Not even sure if it's possible, which
will be a real pain as I can't modify the larget dataset at all.

Grateful for some pointers, if anyone actually understands my problem :slight_smile:

You could have attributes called table and chair, each referring to a
furniture. Upon saving, have a validation check that table is a table
and chair is a chair. I'd recommend doing this with a furniture_type
method, rather than directly checking the range; if you somehow manage
to be able to change this ID silliness, you can then have the method
check something else instead (such as a enumerated type attribute).

-Dave

class Furniture < ActiveRecord::Base; end

class Table < Furniture
   default_scope where( ... check id here... )
end

class Chair < Furniture

# two premature sends today; fingers sticking to keyboard here in
# 90+degree San Jose - sorry!

class Furniture < ActiveRecord::Base; end

class Table < Furniture
   default_scope where( ... check id here... )
end

class Chair < Furniture
  default_scope where( ...check id here... )
end

HTH,

Thanks guys, I will have a fiddle and see what I can do with your
suggestions. It's really a rediculous way to keep the data and if it was
up to me I can guarantee it would be done differently :slight_smile:

Thanks

Got it working perfectly now. I'm not going to put much checking in, if
I leave a couple of small gaps and something gets mis-associated, I can
push harder for an overhaul of the dataset :slight_smile:

Thanks again