単一テーブル継承を利用するカードゲームアプリケーションがあります。、、列を持つ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.)
これを機能させることは可能ですか、それともフラットなディレクトリ構造に運命づけられていますか?