は、私は可能なボックスのオプションのうちいずれかの認識していないよ役立ちますが、とにかくこのような何かのオフ自分自身を転がり方がよいかもしれません願っています。これにより、柔軟性が向上し、実装するのが面倒ではありません。
create_table :fields do |t|
t.string :type, null: false # TextField, ListField, etc.
t.jsonb :config, default: {}, null: false
t.belongs_to :contact
end
あなたはその後、別の使用のために必要なのサブクラスを作成することができます:モデルの面では、私はおそらく、おそらく(postgresのを想定)カスタマイズオプションについてjsonb
列を使用して、フィールドのための単一テーブル継承のテーブルに行くと思います-cases:
class Field < ApplicationRecord
belongs_to :contact
end
class TextField < Field
def required=(required)
config[:required] = required
end
end
class CheckboxField < Field
def default_checked=(default_checked)
config[:default_checked] = default_checked
end
end
あなたはjsonb列にきれいなインターフェースのために作るためにjsonb_accessor
のようなものの中に見ることができます。
create_table :contacts do |t|
t.string :type, null: false # Contact, Lead, Client
end
class Contact < ApplicationRecord
end
class Lead < Contact
end
アプリのマルチテナントです:それはまた、ベーステーブルがどうあるべきかわからない、だけでなく連絡先の意味を成すかもしれないが、おそらくのようなものは以下のように
同様に、単一テーブル継承に見えますか? –
はい、マルチテナントです。 –