1

Rails 3.2.8 を SQLite で実行する (rubyonrails.org の現在の dl からの基本的なセットアップ)

「メモ」の属性を持ちたいいくつかのモデルがあり、すべての「メモ」が文字列の場合、特定のメモ モデルは 1 つだけで、他のすべてのモデルはそのメモ モデルを参照する必要がありますか?

また

各モデルには「メモ」用の独自の属性が必要ですか?

最初の応答の場合、「メモ」を参照する関係ごとに、その関係を定義する別のクラスを作成する必要があるという:throughことですか? (つまり、tableOne、tableTwo、および tableThree のすべてのリファレンス ノートの場合、追加のクラス tableOne_notes、tableTwo_notes、および tableThree_notes を作成する必要があります)

ポリモーフィック ソリューションは適用可能ですか?

4

2 に答える 2

3

他の多くのモデルに対して同じ目的を果たすことができる 1 つの「メモ」モデルが必要な場合、これは多態的な関係になります。これは、アプリケーション フレームワークに関係なく、実際に当てはまります。

この例のポリモーフィックな関係の Rails 実装の特定のケースでは、追加します

note_type 

Notes モデル/テーブルおよび Note モデルの列、データベースの移行に加えて以下を使用:

belongs_to :notable, :polymorphic => true  

そしてNoteその後

has_many notes, :as => notable` 

メモが必要な他のモデルで。

詳細については、http: //guides.rubyonrails.org/association_basics.html#polymorphic-associationsを参照してください。

ポリモーフィックなリレーションシップのよくある用途:

  • ノート (使用しているとおり)
  • 更新情報 (タイムスタンプ、IP アドレス、ユーザーエージェントなど)
  • 単純なキーと値のルックアップであるカテゴリ
于 2012-12-07T22:01:10.493 に答える
0

それはあなたのニーズに依存します。でも、基本的にはモデルNoticeを作って、andと...1-nNoticeOtherOther2

あなたの質問を理解しているように、11-nつまたは複数の1-n関係のみが意味をなします。すべてのテーブルに列を追加すると、notesデータ行ごとに 1 つのメモだけになる可能性があります。定義する別のクラスは関係:throughによって必要ありません。1-n

于 2012-12-07T20:59:49.390 に答える