2009-02-10 3 views
1

나는 임시적으로 새 사용자를 등록하고 생성 된 암호가 포함 된 전자 메일을 보내는 User.create 작업을 가지고 있습니다. 그 작업을 완료하는 가장 레일스적인 방법은 무엇입니까? 앞으로도 모든 것을 정확히하고 싶습니다. 더 이상 말도 안돼. 이번엔 진지해. 나는이는 옵션입니다 생각하고레일스 작성 작업을 완료하는 올바른 방법은 무엇입니까?

...

  1. login_email_sent.html.haml라는 뷰를 생성하고 렌더링. "감사합니다. 로그인하면 이메일이 전송되었습니다."라는 메시지가 표시됩니다.

  2. create.html.haml이라는보기를 만들어서 Rails가 기본적으로 렌더링하도록하십시오.

  3. 사용자를 방금 플래시의 메시지와 함께 제출 한 양식과 동일한 페이지로 리디렉션하십시오.

아니면 ...?

답변

6

이것은 사용자 경험에 관한 더 많은 질문입니다.

생성 작업을 방금 생성하고 출력하지 않는 항목으로 남겨 둡니다 (또는 API 호출로 생성 된 경우 단순한 201 Created 헤더). 수행합니다 redirect_to에 다음 중 하나를

  1. 방법의 대기 시간을 알려주는 감사 페이지와 무슨 일이 매우 눈에 보이는 플래시 메시지
  2. 홈페이지 다음 그들을 그냥 무슨 일이 있었는지 알려주 발생합니다.

99.9 %의 경우에 템플릿 작성이 필요하지 않습니다.

def create 
    User.create(...) 
    respond_to do |format| 
    format.html { redirect_to signup_complete_url } 
    format.xml { render :head => :created } 
    end 
end 

예를 들면.

4

확실히 옵션 3, 표시 작업으로 리디렉션. 이렇게하면 작업이 완료되면 사용자가 리디렉션되므로 실수로 다시 게시 할 수 없습니다. 또한 렌더링 된 페이지를 책갈피에 저장하거나 저장할 수 있습니다.

+0

나는 리디렉션 부분에서 당신과 함께 하겠지만 쇼 동작에 대해서는 알지 못합니다. 그것은 정확히 쇼 상황이 아닙니다. 나는 User의 인스턴스 (쇼 액션의 일반적인 목적)를 표시하지 않고 단지 감사 페이지입니다. 특별한 login_email_sent 동작 및보기로 리디렉션 될 수 있습니다. 확실하지 않다. – Ethan

+0

보여주는 것은 RESTful입니다. 새 리소스를 만들려면 게시 한 후 반환해야합니다. –

1

이메일을 확인하고 계정에 로그인하는 방법에 대한 자세한 내용은 이메일을 확인하라는 플래시 메시지와 함께 로그인 페이지로 리디렉션하십시오. 많은 사람들이 사용자 유효성 검사를 자동으로 사용자에게 로깅 할 것을 제안하지만, 제 생각에 이것은 민감한 사이트의 보안 문제입니다.

1

등록하지 않고 사이트에서 유용하게 사용할 수있는 것이 있는지에 따라 다릅니다. 그런 다음 홈페이지로 리디렉션하고 플래시를 사용하여 이메일이 전송되었다는 메시지를 표시하고 그 동안 주변을 둘러 보도록 초대합니다.

그들이 할 수있는 일이 없다면 정보/faqs가있는 환영 페이지로 리디렉션하여 헤드 스타트를 시작하고 그들이 가치있는 것에 서명 한 것처럼 느껴지도록 할 수 있습니다.

이메일에 암호를 보내는 대신 사용자 계정 설정 페이지에 대한 링크를 보내어 암호 및 기타 세부 정보를 설정할 수도 있습니다. 이 링크에는 새 사용자 계정과 관련된 백도어 액세스 코드가 포함됩니다. 이 페이지를 제출하고 유효성을 검사하면 백도어 코드를 삭제할 수 있습니다.

잊어 버린 비밀번호는 사용자가 새 비밀번호를 설정하거나 기억하고 로그인하면 정상적으로 백도어 코드가 삭제되는 동일한 접근 방식을 사용할 수 있습니다.

이 접근법의 유일한 문제점은 두 개의 브라우저 창 또는 탭이 사이트에서 열릴 수 있다는 것입니다. 그러나 주소, DOB 또는 무엇이든간에 필요한 정보는 초기 가입 양식에 너무 많은 질문을 던져 사람들을 겁 먹지 않고 요청할 수있는 기회를 제공합니다.