アプリケーションで単一テーブルの継承を使用していて、祖先から継承されたユーザーを構築する際に問題が発生しています。たとえば、次の設定を使用します。
class School < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
attr_accessible :type #etc...
belongs_to :school
end
Class Instructor < User
attr_accessible :terms_of_service
validates :terms_of_service, :acceptance => true
end
Class Student < User
end
Schoolinstructor
のインスタンスからまたはstudent
レコードを作成するにはどうすればよいですか? 次のようなことを試みると、新しいユーザーインスタンスのみが得られ、インストラクター固有のフォームを生成するときに後でエラーが発生するなど、インストラクター固有のフィールドにアクセスできません。コンソールからビルドすると、大量割り当てエラーが発生します(指定されたインストラクターレコードではなく、ユーザーレコードを作成しようとしています)。私は学校の例を挙げましたSchool.first.instructors.build(....)
terms_of_service
、しかし、User テーブルから継承したい他のいくつかの関連付けがあるため、データベースでコードやフィールドを繰り返す必要はありません。STI セットアップで関連付けを共有できないため、この問題が発生していますか?