Rails: Single Table Inheritance and models subdirectories
Posted
by Chris
on Stack Overflow
See other posts from Stack Overflow
or by Chris
Published on 2010-05-26T12:49:59Z
Indexed on
2010/05/26
12:51 UTC
Read the original article
Hit count: 689
I have a card-game application which makes use of Single Table Inheritance. I have a class Card
, and a database table cards
with column type
, and a number of subclasses of Card
(including class Foo < Card
and class Bar < Card
, for the sake of argument).
As it happens, Foo
is a card from the original printing of the game, which Bar
is a card from an expansion. In an attempt to rationalise my models, I have created a directory structure like so:
app/
+ models/
+ card.rb
+ base_game/
+ foo.rb
+ expansion/
+ bar.rb
And modified environment.rb to contain:
Rails::Initializer.run do |config|
config.load_paths += Dir["#{RAILS_ROOT}/app/models/**"]
end
However, when my reads a card from the database, Rails throws the following exception:
ActiveRecord::SubclassNotFound (The single-table inheritance mechanism failed to locate the subclass: 'Foo'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Card.inheritance_column to use another column for that information.)
Is it possible to make this work, or am I doomed to a flat directory structure?
© Stack Overflow or respective owner