Acompanhar tópico usando endereço de e-mail sem exigir registro

Passei um bom tempo vasculhando o código. Acho que algo assim (aviso: muito provavelmente não está funcionando, pois ainda não tentei) funcionaria para permitir que o usuário poste uma resposta apenas com um e-mail. Agradeceria quaisquer comentários que você tiver.

Não tenho certeza se esta é a melhor maneira de criar um usuário em estágio. Não encontrei nenhum método que crie especificamente usuários em estágio, no entanto.

class SomePluginController < ApplicationController

  # Certifique-se de que há um usuário em estágio no banco de dados
  def ensure_user

    # Veja se o usuário em estágio existe
    user = User.where(staged: true).with_email(params[:email].strip.downcase).first

    # Crie um usuário em estágio manualmente
    if !user
      user = User.new
      user.staged = true
      user.email = params[:email]
      user.active = false
      user.save!
    end
    
    user
  end

  # Assista ao tópico como um usuário em estágio
  def staged_watch

    user = ensure_user

    topic = Topic.find(params[:topic_id].to_i)
    TopicUser.change(user, topic.id, notification_level: params[:notification_level].to_i)

  end

  # Responda ao tópico como um usuário em estágio
  def staged_reply
 
    user = ensure_user

    manager = NewPostManager.new(user,
                             raw: params[:body],
                             topic_id: params[:topic_id])
    result = manager.perform

  end

end
3 curtidas