2012-02-14 20 views
2

私は、それぞれが独自のテーブルとコントローラを持って、私は2つのActiveRecordモデル、ABを持っているのRuby 1.8.7とRails 2.3.8に1つのクラスを別のクラスのサブクラスに移行するにはどうすればよいですか?

を使用しています。

BAオブジェクトをテンプレート化するために使用されるA
Bと同じ属性およびメソッドの多くを有します。
Aには、Bから作られた実際のオブジェクトのように、さらに多くの属性があります。

だからBAのスーパークラスにする必要がありますか?

を(ABが他の方法で回避しますが、ないことをすべての属性を持っているので)私はすでにA用コントローラへのサブクラスとしてBするためのコントローラを持っています。

別のテーブルのサブクラスを作成するにはどうすればよいですか?

Bのコントローラーは10行のように2台のコントローラーを保持することはそれほど重要ではありません。

オブジェクトの一部である可能性のあるメソッドをどのように呼び出すのですか? .try()がありますが、それは属性に対してのみ機能すると思いますか?

何とかもっと明確にする必要がある場合は、私に教えてください。

+1

データを別々のテーブルに保存することを「複数テーブル継承」と呼びます。 Railsはデフォルトで「単一テーブル継承」を実行しますが、RailsでMTIを実行する方法についてはいくつかの記事があります。 –

+0

ありがとう、私はそれを見ていきます。 = D – NullVoxPopuli

答えて

1

mixinを使用することをおすすめしますか?継承と同じ利点を提供しますが、あるクラスを実際に継承することはありません。代わりに、クラスとインスタンスのメソッドと、mixinを含む各クラスで使用可能な変数を提供することができます。

これは、インターフェイスを共有する必要のあるモデルや、純粋なMVCではないシステムの他の部分で複数のモデルを使用する予定のモデルに使用します。

+1

多くの研究の後、私のテーブルのそれぞれのトラフィックの量は、私はこれが最善のアプローチだと思う。 = D – NullVoxPopuli

関連する問題