2013-01-10 1 views
2

처음부터 내 자신의 이메일 확인 롤백. 내 confirmations_controller에 적합한 라우팅을 생성하는 방법에 대해 고심하고 있습니다.레일 : 이메일 확인 메일러의 RESTful (PUT) URL

새 사용자는 '확인'주소로 다시 연결되는 링크가있는 이메일을 받게됩니다.

제 생각에 DB를 변경하기 때문에 PUT 작업이어야합니다. 그러나 이메일의 링크를 클릭해도 '넣기'작업을 제출하지 않습니까? 아니면 할 수 있습니까? 나는 뭔가를 놓쳐 버렸을 것이고, 내 자신의 무지는 제쳐두고.

#config/routes.rb 
... 
resources :confirmations, only: [:update] 

confirmation_url(user.email_token) 유효한 URL을 생성합니다 http://localhost:3000/confirmations/ArELEOejYlqbRXdJPavhrp을하지만 링크를 클릭 할 때이 '수'의 요청으로 응용 프로그램에 의해 수신된다.

어떻게 처리해야합니까?

답변

2

이메일의 형식은 무엇입니까? 일반 텍스트라면 GET이됩니다. 그 자체는 정품 인증 페이지를 업데이트하는 데 문제가되지 않습니다. 또한 GET을 사용하여 페이지를 열어 마지막 제출을 위해 버튼을 클릭하도록 할 수 있습니다 (일반적이지는 않음).

그러나 GET을 통해 업데이트해도이 특정 기능에 대해 신경 쓰지 않아도됩니다.

예 :

# routes.rb 
get 'confirmations/:id/confirm' => 'Confirmations#confirm' 

# confirmations.rb 
class ConfirmationsController < ApplicationController 

    def confirm 
    # handle the get data here (switch aa flag for the email account)  
    end 
end 
+0

그것이 ** 일반 텍스트 **. 나는 HTML을 추가 할 계획이지만 항상 텍스트 버전 ('multi-part'MIME)이 있기 때문에'GET' 요청을 처리 할 준비가되어 있어야한다고 생각하니? 그래서, 만약 내가 이것에 대한 순수한 RESTful 스타일링으로 깨기 만한다면, 어떻게하면 GET 업데이트를 처리 할 수 ​​있을까? 아마도'edit' 액션에서? 그러나 그것은 /'/ confirmations/abcdefghi .../edit'라고 어색합니다. – Meltemi

+0

또는 만약 그들이'HTML' 이메일에 응답한다면 #update 액션에서'PUT'으로 처리 할 것입니다. 그렇지 않으면'PUT' 링크를 클릭 할 수있는'/ edit' 페이지에 링크합니까? 또는...? – Meltemi

+1

예를 추가했습니다. 예/편집은 약간 이상하게 보일 것입니다. 일부 사람들은 html 이메일을 좋아하지 않습니다 (평문으로 계산). 자신 만의 행동을 정의 할 수 있습니다 (예 참조). GET을 사용하는 IMO는 (이 경우) 문제가되어서는 안됩니다. – Roger