Ruby on Rails / Devise - Ignorando a opção de validação personalizada no modelo ao redefinir a senha

No meu projeto, alterei o formulário de registro no Devise para adicionar uma opção: agree através de um acessador (o usuário deve aceitar os termos de serviço para se registrar, etc). Se eles não concordarem, não valida.

Isso causou um problema quando um usuário tentou editar as informações de sua conta, pois buscava a validação: concorde, mas eu consegui adicionar uma cláusula 'a menos' e adicionei outro acessador chamado: managed_in, definido no controlador (não consegui para descobrir como obter o modelo para determinar se o usuário estava conectado ou não, os ajudantes do dispositivo não funcionariam para mim). As partes relevantes do meu modelo de usuário e do users_controller se parecem com ...

user.rb

validates :agree, :term_agreement => TRUE, :unless => :signed_in

users_controller.rb

def update
   @user = User.find(params[:id])

   if user_signed_in?
     @user.signed_in = params[:user]
   end

  [...]
end

Então, tudo funciona bem ... a validação "concordo" substitui quando um usuário já está conectado. No entanto, tenho que descobrir a melhor maneira de substituir outro cenário ... quando um usuário redefine sua senha e precisa mude

Eu estava testando contas de usuário e tentei redefinir minha senha em uma conta, no entanto, fui atingido com a validação: concordo ... agora tenho que descobrir uma maneira de substituir isso. Notei que o formulário Alterar sua senha tem um valor de campo oculto de: reset_password_token, no entanto, tentei: a menos que =>: reset_password_token, mas não funcionari

Então, qual é a melhor maneira de conseguir isso? Além disso, como posso ter uma condição de / ou (a menos que: assinado_em ou: reset_password, etc) para isso: a menos que a cláusula?

questionAnswers(3)

yourAnswerToTheQuestion