2011-12-02 6 views
0

私は実際に大きなデータモデルの賢明なプロジェクトが進行中です。私はモデル間の関係を扱う最良の方法を理解しようとしています。簡潔にするためレールと3つのモデル関係をビューとコントローラレベルで扱う方法は?

Car 
    has_many :passengers 
    has_many :items 

または

Team 
    has_one :head_coach 
    has_many :coaches 
    has_many :players 
    belongs_to :owner 

だから、ショーのページから、私は車の中にいる人の車の中で、どのような商品を見るでしょう。私はそうTeamコントローラがこの

class TeamController < ApplicationController 
    # ... magic ... 
    def manage_players 
    @signed_players = Player.signed_players 
    @free_agents = Player.free_agents 
    end 
end 
を持つことになり、我々は、彼らが他のモデル

との関係を管理するには、showページ上のリンクをクリックしますmanageと呼ばれるコントローラのアクションを持つべきだと思ういくつかの同僚を持っています

manage_playersビューはちょうど

誰もがこれを達成する方法についての考えを持っている...などの関係を除去するための適切なコントローラ上の実際のRESTfulなアクションへのリンクを持っているでしょうか?

答えて

1

これはあまりにも複雑なアプローチです。良いニュースは、あなたが思うより簡単です。

自分で問題を解決してください。あなたの質問に迅速に答えnested resourcesを使用することです:あなたはなどCarを処理し、関連するすべての乗客/アイテム単一のフォーム、またはTeamとそのコーチ、選手、

にアクションを持つことができます/あなたが「表示説明すると、は、の/ Teamのアクションはeditになります。 manageアクション名はいいアイデアですが、実際に行っているアクションは編集です(何も記述していないので特別なことはありません)。なぜデフォルトをeditと呼んでいるのですか?

ネストされたルートを利用するものの実例を希望する場合は、rpglogger.com(私のサイト)をチェックしてください。あなたがそれを周りに遊ぶときは、アドレスバーに経路/ URLを確認してください。

また、open sourceです。あなたの質問に具体的に関連している:

  • routes.rb fileを見て、私は二回sections上のリソースを定義する方法に注意 - ログブックにスコープのOne、およびにスコープのOne - これは実際に私のルートの2つの異なるバージョンを提供しますセクション
  • 内のオブジェクトは、両方の私のnewedit形でworld_object_form.haml(もhaml岩、FYI)を参照してください - まだそれは、短いむしろ単純、そして読みするのは簡単/ undestandそれが何をするか与えられたのです。
+0

ネストされたリソースについて知っています。他の人たちがこの問題にどのように近づいてきたかを知りたかっただけです。私はBackbone.jsや他のAJAXのものを使ってこのようなことをしてきました。どこのページを心配する必要はありません。最初のプロトタイプでは、単純なHTTPリクエストを使用してAJAXに移行する前に作業したいと思っていました。 – WarmWaffles

+0

しかし、Railsが時間を節約する主な理由の1つは、マントラを繰り返す - 私は本当にあなたがすべてのそれらの建築の選択肢を再決定する必要はありません。あなたが描いていることは、それらの人にとって完璧なものであり、「ほとんど」適切な状況ではありません。 – jefflunt

関連する問題