2009-04-24 3 views
3

私は、Railsでより高度なモデルを使用して調査を始めました。私が定期的に大成功を収めているのは、多対多の関係で基本クラスのサブクラスであるクラスが多対多の相互参照関係にアクセスするモデルです。異なるデータベーステーブルによるActiveRecordの継承

このように、相互参照クラスは、基本クラスのスタンバイとして機能することができます。

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

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

私はより適切かもしれない多型関連を調べていません。事前に

おかげで...、

答えて

2

は、サブクラスにset_table_nameを試してみましたか?

また、モデルクラスで@abstract_classを設定してください。

最後に、あなたが必要とするのは、両方のモデルに含めるMixinであるかもしれません。

とにかく、何をしようとしているかは、むしろun-ActiveRecord-ishと聞こえます。あなたが達成しようとしていることのより明確な例を掲示したいかもしれません、多分より簡単なものを考え出すことができます。

+0

このような投稿にはちょっとばかげているかもしれません(4か月後)。しかし、ありがとう...私はこの質問を投稿した場所を忘れていました。私は最近、この問題が再び浮上したので、ウェブの周りを粉砕していました。とにかく私はあなたのコメントを見てみましょう - それは少しun-somethingです - 私は気づきます。 –

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という名前のテーブルを探します。

関連する問題