У меня есть приложение для карточных игр, в котором используется наследование одного стола. У меня есть class Card
и таблица базы данных cards
со столбцом type
, а также ряд подклассов Card
(включая class Foo < Card
и class Bar < Card
, для аргумента).
Как оказалось, Foo
- карта из оригинального издания игры, а Bar
- карта из расширения. В попытке рационализировать мои модели, я создал структуру каталогов следующим образом:
app/
+ models/
+ card.rb
+ base_game/
+ foo.rb
+ expansion/
+ bar.rb
И модифицированный файл environment.rb, содержащий:
Rails::Initializer.run do |config|
config.load_paths += Dir["#{RAILS_ROOT}/app/models/**"]
end
Однако, когда мое приложение считывает карту из базы данных, Rails выдает следующее исключение:
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.)
Возможно ли заставить это работать, или я обречен на плоскую структуру каталогов?