0

Rails に別のモデルのベースとして使用したいモデルがあります。

たとえば、 model: parentはモデルchildのテンプレートになります。次の 2 つのオプションが考えられます。

(1) 最初のモデルから継承し、列を追加する

Class Parent < ActiveRecord::Base
Class Child < Parent

(2) model.rbファイルをコピーして新機能を追加

Class Child < ActiveRecord::Base

どちらの場合も、モデルの「Rails」部分が作成されますが、データベース テーブルはどうでしょうか。create table child as select * from parent where 1=2を使用してテーブルを作成し、マイグレーションを作成して追加の列を追加することはできますが、「Rails の方法」とは思えません。

既存のテーブルに基づいて移行を作成する簡単な方法はありますか? または、私は完全に間違ったツリーを吠えていますか?

4

1 に答える 1

2

(1) は単一テーブル継承(STI) と呼ばれます。基本的に、親フィールドと子フィールドの両方を持つ 1 つのテーブルを使用します。typeオブジェクトのタイプを識別するために呼び出される列も必要です。

詳細がなければ、あなたのケースで STI を使用するのが良い考えかどうかはわかりませんが、(2) model.rb をコピーすることは確かに正しくないようです。

于 2013-06-29T13:36:21.333 に答える