Pergunta

Eu estou usando ActiveRecord para manter as informações sobre os usuários. A classe Usuário tem a carga esperada (), insert (), update () e delete () métodos, setters, getters e alguns outros. Mas eu estou tendo problemas para decidir se deve ou não alguns outros métodos devem ser incluídos na classe User, ou manipulado por colaboradores.

Aqui está um exemplo:

Existem várias transações que um usuário pode solicitar que requerem confirmação. Isso é tratado de uma forma convencional - o envio de um e-mail para o usuário com um link; clicando nos links confirma que o usuário, de fato, quer a realização da operação. Um hash da chave de verificação e da data de expiração / hora persistem como parte do registro do usuário.

Onde devo desenhar a linha neste processo? Deve haver um colaborador que a verificação alças (por exemplo, tomando a chave de verificação de texto simples da string de consulta e aceitar um objeto Usuário como um param)? Ou isso deve ser tratado internamente pela classe do usuário (passando a chave de verificação de texto simples em uma chamada de método)?

A próxima coisa que poderia acontecer após a verificação, é claro, é que a operação continue exigindo uma atualização para o registro ativo -. E ali, parece-me, a classe O usuário deve ter a responsabilidade

Todas as sugestões?

Foi útil?

Solução

Você deve delegar essa tarefa a um colaborador, que administra uma mesa confirmations.

Você usaria o modelo Confirmation para rastrear todos os requisitos de confirmação. O modelo vai pertencer a User, bem como administrar o hash confirmação e a acção-a-ser-confirmada (por exemplo activate_account, change_password ou change_email etc.).

O controlador Confirmation seria responsável pela validação da hash de confirmação e de um encadeamento a acção apropriada no modelo adequado (por exemplo activate_account -> user.activate(), change_password -> user.setPassword() etc.) e remover o Confirmation da tabela de confirmations após a conclusão <. / p>

Isto irá permitir uma melhor separação da lógica, bem como permitir que você dimensionar melhor, por exemplo, para entreter mais de um pendente de confirmação para um determinado usuário (confirmação por exemplo a alteração de senha e de confirmação para a mudança outra coisa.)

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