2011-07-29 3 views
1

내 모델에서 나는이STI 및 컨트롤러

차량 모델처럼 STI를 사용

class Vehicle < ActiveRecord::Base 
end 

자동차 모델 vehicle.rb : car.rb

class Car < Ad 
end 

버스 모델 : bus.rb

class Bus < Ad 
end 

가장 효율적인 방법은 하나의 컨트롤러 만 사용 하시겠습니까?

감사 제 생각에는

+0

당신은 당신이 시도하고있는 무슨에 정교한 수 컨트롤러에서 어떻게해야할까요? –

+0

이 질문에 대한 답변이 있습니까? http://stackoverflow.com/questions/5246767/sti-one-controller – Karl

+0

나는 그렇다고 생각합니다. 누군가 모델의 테이블에 대한 예제도 제공 할 수 있습니까? 그리고 또 다른 질문은 내 기존 링크가 작동합니까? 예 :'vehicles_path'? – Immo

답변

2

가장 좋은 방법은 다음과 같이 그것을 할 수 있습니다 :

먼저 (나는 이것이 최선의보다 효율적인 방법인지 확실하지 않다). 새로운 경로를 추가 : 당신이 할 수있는 컨트롤러 액션에서 다음

def vehicle_type 
    params[:type].constantize 
end 

:

resources :cars, :controller => "vehicle", :type => "Car" 
resources :buses, :controller => "vehicle", :type => "Bus" 

사용하려는 일정 실제 클래스로 형 PARAM을 변환 컨트롤러에 개인 메서드를 추가합니다

def new 
    vehicle_type.new 
end 

def create 
    vehicle_type.new(params) 
    # ... 
end 

def index 
    vehicle_type.all 
end 

URL이

다형성되는 :)에 대한

<%= link_to 'index', @vehicle.class %> 

PS : 내 대답은 stackoverflow.com/questions/5246767/sti-one-controller에서 찍은 내 경험