3

Rails でより高度なモデルを使用して調査を開始したところです。私が定期的に使用し、大きな成功を収めているのは、多対多の相互参照関係が、それ自体が多対多の関係の基本クラスのサブクラスであるクラスによってアクセスされるモデルです。

このようにして、相互参照クラスは基本クラスの代役として機能できます。

良い例は、ナビゲーション階層ノード (NavigationNode) がユーザー ロールに相互参照されている場合です。クロスリファレンス ポイントで、クラス (RoleNavigationNode) は NavigationNode から継承でき、ユーザー ロールの詳細な知識を保持できます。

私の質問 (上記の場合) は、RoleNavigationNode が NavigationNode から継承し、NavigationNode がアクセスするテーブルではなく相互参照テーブルにアクセスできるかどうかです。これはもちろん ActiveRecord を使用して行います。

私は、より適切であるかもしれない多型関連を調査していません。

前もって感謝します...、

4

2 に答える 2

2

これはRails 3で動作します:

class Common < ActiveRecord::Base
  @abstract_class = true
  def common
    "Foobar!"
  end
end

class Model < Common
end

class AnotherModel < Common
end

を設定しないabstract_classと、Rails はデータベースで指定されたテーブルを探しcommonsます。

于 2012-02-29T22:05:34.347 に答える
2

set_table_nameサブクラスで試しましたか?

また、@abstract_classモデルクラスでの設定も調べてください。

最後に、必要なのは両方のモデルに含める Mixin だけかもしれません。

とにかく、あなたがやろうとしていることは、ActiveRecord らしくないように聞こえます。あなたが達成しようとしていることのより明確な例を投稿したいかもしれません.おそらく私たちはもっと簡単なものを思いつくことができるでしょう.

于 2009-05-01T13:58:52.373 に答える