Pergunta

Eu tenho uma ação User.create que registra provisoriamente um novo usuário e envia um e-mail com uma senha gerada. Qual é o maior Rails-como forma de completar essa ação? Eu quero fazer tudo exatamente certo de agora em diante. Não mais absurdo. Desta vez eu estou falando sério.

Estou pensando estas são as opções ...

  1. Criar uma vista chamado login_email_sent.html.haml e torná-lo. (Ele teria uma mensagem do tipo "graças, um email foi enviado com o seu login.")

  2. Criar uma vista chamado create.html.haml e deixar Rails renderizar que, por padrão.

  3. redirecionar o usuário para a mesma página que o formulário que acabou de enviar com uma mensagem do flash.

Ou algo mais ...?

Foi útil?

Solução

Esta é mais uma questão de experiência do usuário.

Deixe a ação como algo que apenas cria e não tem saída (ou apenas um cabeçalho simples 201 Created se criado por uma chamada API) criar. Fazer um redirect_to que quer:

  1. A página de agradecimentos dizendo-lhes como que esperar eo que vai acontecer a seguir
  2. A página inicial com uma mensagem flash muito visível deixá-los saber o que aconteceu.

Em 99,9% dos casos, você não deve precisar de um modelo para criar.

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

Por exemplo.

Outras dicas

Definitivamente opção 3, redirecionando para a ação show. Ao fazer isso, o usuário será redirecionado quando os concluída ação, e, portanto, não pode acidentalmente repost por trás na história indo. Além disso, isso garante as páginas prestados podem ser marcadas / salva.

redirecioná-los para a página de login, com uma mensagem flash dizendo-lhes para verificar o seu e-mail para obter mais instruções sobre validação e registro em sua conta. Muitas pessoas sugerem registrando o usuário automaticamente na validação do usuário, mas na minha opinião, este é um problema de segurança para sites sensíveis.

Depende se há algo que pode ser útil para fazer em seu site, sem registrar. Se há, então, redirecioná-los para a página inicial e use o flash para exibir uma mensagem explicando que um e-mail foi enviado e convidando-os a olhar em volta no mesmo período.

Se não há nada que eles podem fazer, então você pode redirecioná-los para uma página de boas-vindas com informações / perguntas freqüentes para ajudá-los a obter uma vantagem inicial e fazê-los sentir como eles se inscreveram para algo de valor.

Além disso, em vez de enviá-los uma senha no e-mail, considerar enviá-los um link para a conta do usuário configurar página onde pode configurar sua senha e outros detalhes. O link deve conter um código de acesso porta traseira associada com a nova conta de usuário. Quando esta página é apresentado e validado o código da porta traseira pode ser excluído.

A mesma abordagem pode ser usado para senhas esquecidas, assim que o usuário define uma nova senha ou se eles se lembram dele e sinal normalmente o código da porta traseira é excluído.

O único problema com esta abordagem é que eles podem acabar com duas janelas do navegador ou abas abertas em seu site. Mas isso não lhe dar a chance de perguntar para qualquer outra informação que você pode exigir - endereço, data de nascimento ou qualquer outra coisa -. Sem assustar as pessoas longe, colocando muitas perguntas sobre seu sinal inicial acima do formulário

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top