Rails アプリで User モデルとそのサブクラスの Member、Subscriber、および Staff に対して単一テーブルの継承を設定しようとしています。
それぞれのモデル ファイルがあります: user.rb、member.rb など
ユーザーモデルが定義されています:class User < ActiveRecord::Base; end;
私は他のモデルをサブクラス化しました: などclass Member < User; end;
。
私の users テーブルには、すべてのクラスが必要とするすべてのフィールドと type フィールドがあります。コンソールに移動して、たとえばメンバーまたはサブスクライバーの新しいインスタンスを作成しようとすると、次のエラーが発生します。
TypeError: can't dup NilClass
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2184:in 'dup'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2184:in 'scoped_methods'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2188:in 'current_scoped_methods'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2171:in 'scoped?'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2439:in 'send'
from /Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:2439:in 'initialize'
from (irb):6:in 'new'
from (irb):6
Rails は、サブクラス モデルがそこにあることを認識しています。これは、コンソールで単に Member または Subscriber を呼び出すと、クラス定義が返されるためです。
簡単なドキュメントを読みましたが、何か足りないのでしょうか?