2017-07-22 17 views
0

STI実装用の足場を生成しようとしています。私は以下を発行します。Rails 5.1.2 - 単一テーブル継承:マイグレーションが生成されない

rails g scaffold user1 type name email 

rails g scaffold member company subscription --parent user1 

マイグレーションファイルmy 'member'モデルを除いてすべてが生成されたファイルを取得します。
私はこの

Member.create(name: "My Name", email: "[email protected]", 
       company: 'Example LLC', subscription: 'Monthly Gold') 

状部材レコードを作成しようとすると、私はこのエラーを取得:何が起こっているかの

ActiveModel::UnknownAttributeError: unknown attribute 'company' for Member. from (irb):1

任意のアイデア?私が使用

は5レールとdbが--parentオプションでは、親クラス(またはあなたがどんな列型の列を持つテーブルを持っている、つまりあなたは、すでに単一テーブル継承のためのすべての設定されていることを前提としてpostgresの

+1

['--parent'引数を指定して呼び出したときに 'rails g scaffold'がdbマイグレーションを生成しないのはなぜですか?](https://stackoverflow.com/questions/34700201/why-doesnt -rails-g-scaffold-generate-a-db-migration-as-a-pa) –

+0

はい。これは複製です。ありがとう。私は私の質問を変更します。 – collabrite

答えて

0

ですこれを使用して)。

モデルは親のテーブルに保存されますので、サブクラス用の新しいテーブルを作成する必要はありません、それ故に何の移行

は私が誰かに尋ねたこの質問に似て、この答えを得ません。

0

私の理解では、あなたは間違ったトラックにいます。単一テーブル継承では、継承されたモデルのタイプを示すために、すべての属性が親モデルテーブルに追加の列名 'type'とともに存在する必要があります。カラム名 'type'は適切な設定で変更できますが、ActiveRecordはデフォルトで 'type'カラムを探します。親モデルのテーブルに次の列がないため、 'UnknownAttributeError'エラーが発生しています。新しい列を追加するには、移行を作成する必要があります。 STIの概念を理解していただきたいと思います。さらなる調査のために、私はあなたに公式ガイドのリンクを提供しています。あなたの問題が解決されることを願っています。 http://edgeguides.rubyonrails.org/association_basics.html#single-table-inheritance

関連する問題