0

単一テーブルの継承を使用する場合、異なるモデルに固有の列を設定しないように注意する必要がありますか? 各モデルが使用する列を指定する方法はありますか?

4

1 に答える 1

1

Railsに関する限り、すべての列をすべてのサブクラスに設定できます。サブクラス モデルにロジックを追加して、特定のフィールドが設定されないようにすることはできますが、これを自動化する方法はありません。before_saveおそらく、フィルターを実装することができます。

class MySubModel < MyModel
  UNUSED_FIELDS = %w{ field_x field_y field_z } 
  def before_save
    UNUSED_FIELDS.each {|f| self.send("#{f}=", nil)}
  end
end

ただし、1 つのサブクラスでのみ使用される列が多数ある場合、STI は使用するのに最適な継承モデルではない可能性があります。

于 2009-07-21T16:55:43.293 に答える