0

3 つのモデルと、それに対応するテーブルとコントローラーがあります。

  • リクエスト
  • ダイレクトパッチ
  • UTPファイバーパッチ

ユーザーは新しいリクエストを作成し、リクエストのタイプを定義します: Direct または UTP/Fibre

ユーザーが保存をクリックすると、リクエストが保存され、ユーザーは編集画面にリダイレクトされ、そのリクエストに対応するすべてのパッチ エントリが作成されます。

  • 各パッチ エントリは、選択した要求のタイプに応じて、Direct テーブルまたは UTP テーブルのいずれかに単一の行として保存されます。request_id という列が外部キーとして機能します。
  • Direct と UTP/Fiber では、ビューとフォームが異なります。
  • ユーザーは、単一のホームページですべてのリクエストを表示し、クリックして編集できます。ユーザーは、そのリクエストのすべてのパッチ行を 1 つのページに表示し、クリックして既存の編集または新規追加を行うことができます。

    1. このためにルーティング、コントローラー、およびビューを設定する最良の方法は何でしょうか?
    2. 新しいパッチを作成して自動的に保存するときに、リクエスト ID はどのように渡されますか?

私が抱えている問題の技術的な名前が正確にはわかりませんが、必要に応じて詳細を追加し、質問に答えていただければ幸いです。

4

1 に答える 1

0

リクエスト モデルでポリモーフィック アソシエーションを使用できます。

belongs_to :patch, :polymorphic => true

Request テーブルに 2 つの列を追加します。

patch_id : integer
patch_type : string

リクエストを作成し、ユーザーがパッチ タイプを選択すると、このパッチ オブジェクトをリクエストに割り当てます。これにより、2 つの新しい列が入力されます。リクエストモデルから呼び出すことができます

request.patch

これにより、データベースに保存されている詳細に基づいて、適切なタイプのパッチが返されます (注意 - ポリモーフィック アソシエーションで熱心な読み込みを行うことはできません)。

ビューを実行するには、パッチのタイプに基づいて、編集画面でパーシャルをレンダリングできます。

于 2012-10-02T23:12:54.427 に答える