Forum: Ruby on Rails ActiveRecord Multiple Inheritance solution

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.
A458c4d941f0a6f5b01d924c1c3fc004?d=identicon&s=25 Brian Jones (Guest)
on 2007-01-26 21:30
(Received via mailing list)
Hello,

I am stuck in an environment where there is a massive Oracle database
model in place which cannot be changed, is accessed by large java
systems, and have been tasked with connecting to it all with Ruby on
Rails.  The biggest hurdle has been the fact that we use a multiple
table inheritance model (per class hierarchy), which Rails definitely
doesn't support out of the box.  I've looked around for many solutions,
and spent the last week or two finally trying to roll my own.

The following is what I have created, and I would like to contribute it
to the community.  Any feedback is welcome.

The project is stored in SVN here: http://svn.mojobojo.com/armi

It lacks unit tests, and only has inline documentation.  Hopefully I
can get around to that sometime, and I apologize in advance for the
lack thereof.

I've tested it against Oracle and MySQL, but not PostreSQL.
Unfortunately I don't think SQLite will work, since it has no way to do
sequences as far as I can tell.

The biggest drawback is the number of queries performed, and I can't
think of a way around that.  The price of flattening multiple tables
into a single object I suppose.

Enjoy.


Brian Jones
http://www.mojobojo.com
72eb65fa089082d3bd8b38a5596ad331?d=identicon&s=25 Keynan Pratt (keynan)
on 2007-01-26 21:40
could you show a sample of your DB that is causing this problem?
A458c4d941f0a6f5b01d924c1c3fc004?d=identicon&s=25 Brian Jones (Guest)
on 2007-01-26 22:01
(Received via mailing list)
On Jan 26, 11:40 am, Keynan Pratt <rails-mailing-l...@andreas-s.net>
wrote:
> could you show a sample of your DB that is causing this problem?
>
> --
> Posted viahttp://www.ruby-forum.com/.

We use what is known as "per class inheritance" here, which means a 1
object to many table relationship.  ActiveRecord is closest to a "per
concrete class" model, which is a 1 object to 1 table relationship.
There is no way to use ActiveRecord's modeling convention, because
there are already huge systems in place using a different and widely
used convention.

The following is a good article explaining the three standard models
that are used (not really sure what xcalia is, but good article):

http://www.xcalia.com/xdn/resources/articles/Inher...

Sorry about not going into specific detail, but I feel that this helps
clarify the point.

I built this because I am in an environment where changing the db model
is _not an option_.


Brian
55b646f35b70676d62dcca1763a66cef?d=identicon&s=25 Jason Vogel (Guest)
on 2007-01-27 06:54
(Received via mailing list)
On Jan 26, 3:00 pm, "Brian Jones" <mojob...@gmail.com> wrote:
> there are already huge systems in place using a different and widely
> I built this because I am in an environment where changing the db model
> is _not an option_.
>
> Brian

Did you consider using any of Dr. Nic's Models?

Jason
This topic is locked and can not be replied to.