2011-01-22 4 views
1

State Machine과 매우 유사한 앱을 개발 중입니다.Rails 앱과 같은 상태 머신에서 업데이트 작업을위한 임의의 URL

"사람"을 만든 후에는 "업데이트"작업을 통해 아직 채워야하는 속성이 null로 남습니다.

내 모델에서 "unique_token"함수를 정의 했으므로 사람을 만들고 업데이트 할 때 새로운 고유 문자열이 할당됩니다.

나중에 "edit"및 "update"작업에 대한 내 경로에 "/ : unique_token"을 정의했습니다.

나중에 내 컨트롤러에서 "편집"과 "UDPATE", 나는 정의 :

@person = Person.find_by_unique_token (PARAMS [: unique_token])

하지만를!

업데이트 작업으로 여전히 ID를 찾으려고 시도하기 때문에 오류가 발생합니다.

어떻게 무시해야합니까?

더 나은 방법이 있습니까?

감사합니다.

+0

업데이트 작업이 여전히 ID 찾기를 시도하기 때문에 오류가 발생한다는 것을 정확히 설명 할 수 있습니까? "찾으려고합니다"- 어떻게? ID와 마찬가지로 ID가 있습니까? – polarblau

+0

예. 업데이트 호출은 여전히 ​​컨트롤러 "사람", 작업 "업데이트"및 ID "params [: id]"를 찾으려고 시도합니다. 하지만 그 속성을 요구하지는 않아서 실패합니다. – maukoquiroga

+0

'어디서'찾을 수있을 때 어떻게됩니까? 이 마법사는 또 다른 접근법입니다. http://railscasts.com/episodes/217-multistep-forms – apneadiving

답변

1

와우, 쉽게 같은 :이 사람을 도울 수있는 희망

class PeopleController < ApplicationController 

    before_filter :authenticate_unique_token, :only => [:edit] 

    def authenticate_unique_token 
    person = Person.find_by_unique_token(params[:unique_token]) 
    if person.blank? || person.id != params[:id].to_i 
     raise "whatever" 
    end 
    end 

!