1
class Chair < ActiveRecord::Base 
    has_many :buildings, :as => :faculty 
end 

class Department < ActiveRecord::Base 
    has_many :buildings, :as => :faculty 
end 

class Building < ActiveRecord::Base 
    belongs_to :faculty, :polymorphic => true 
end 

は、私が持っているファイル:がどのようにRails3で、この多型モデルの「所有者」を呼び出すためのルートで

resources :departments do 
    resources :buildings do 
end 

resources :chairs do 
    resources :buildings do 
end 

は、どのように私は良い方法では部門や椅子のための1つのコントローラで新しい建物を建てることができます。行うには、他の鉄道の方法があり、

def faculty 
    if params[:department_id] 
    Department.find(params[:department_id]) 
    elsif params[:chair_id] 
    Chair.find(params[:chair_id]) 
    end 
end 

が、私は求めています:application_controllerで

class BuildingsController < ApplicationController 
    def new 
    @parent = faculty 
    @building = @parent.buildings.build 
    end 
end 

:私はそれが建物の作成者に確認することを、私は別の有用な関数を作成することができますことを、知っていますそれ? Rails3には、情報を取得するために使用できるメソッドがいくつか存在するかもしれません。誰が、別のファンクションファカルティを実装せずにビルドを作成したいと思うのでしょうか。そこ

+0

アプリケーションコントローラに教員を移動するのはなぜ?それを「建物」に移動します。建物/椅子や建物/部署から考えるようにしてください。そうでない場合、あなたのやり方は最善の方法です。 –

答えて

0

あなたはまた、追加の機能を確認する必要がありますが、あなたはのparamsリスト上でIFSを作成する必要はありません。http://railscasts.com/episodes/154-polymorphic-association

+0

お返事ありがとうございました。おそらくレールに標準的な方法は存在しないでしょう。その場合、その場合は「親」を見つけるでしょう。 – qarol

+0

私は、レールに親メソッドがないために困惑しています。これは本当に先進的で、迅速に改善され、ユーザーフレンドリーで直感的なフレームワークですか? – ahnbizcad

関連する問題