2011-07-26 3 views
8

Thread (id, uuid)와 같은 모델에서 uuid는 유일하게 생성 된 식별자입니다. 나는 기본 경로를 변경하려면 : ID하지만 사용자에 :routes.rb, 경로에 대해 다른 기본 키를 설정하는 방법은 무엇입니까?

edit_thread GET /threads/:id/edit(.:format)      {:action=>"edit", :controller=>"threads"} 
thread GET /threads/:id(.:format)        {:action=>"show", :controller=>"threads"} 
PUT /threads/:id(.:format)        {:action=>"update", :controller=>"threads"} 

사용하지 UUID는이 레일/routes.rb에서 가능하게되는 방법 ---?

감사

답변

-1

:id 당신이 원하는대로 변경할 수 있습니다. 내가 제대로 이해한다면, 당신은 대신에 있는지 확인하려면 귀하의 params 해시를 사용하면 경로에서 선택한 이름으로 채워됩니다, 그래서 당신은 :uuid로 변경 한 경우에는 (o = Model.find_by_uuid(params[:uuid]))

+0

감사하지만 내가 얻지 못하는 것은 내 경로에서 어떻게 변경합니까? 나는 많은 성냥을 할 필요가 있니? 나는 레일이 이것에 대해 더 우아한 설정을 가지고 있다고 생각했다 ... thxs – AnApprentice

+1

@AnApprentice : 죄송하지만, 당신이 당신이 자원 경로에서'id' 매개 변수를 바꾸고 싶다는 뜻인지 몰랐습니다. 나는 이것이 가능하다고 생각하지 않는다. (여기 레일 협약에서 벗어났다.) 이전에 유사한 질문이있었습니다. (http://stackoverflow.com/questions/810385/how-to-rename-the-default-identifier-param-id-in-rails-map-resources). – cam

7

그에 따라 컨트롤러를 변경해야하는 단지 것 :id 필드에서 Rails는 경로에서 :uuid 필드를 사용합니다.

모델이 to_param 방법 번복 내부 이것은, 달성하기 매우 쉽습니다 :이 도움이

thread = Thread.find_by_uuid(params[:id]) 

희망 :

def Thread 
    def to_param 
    uuid 
    end 
end 

및 컨트롤러 내부

, 당신은 뭔가를 작성해야합니다.

관련 문제