Ver tema usando dirección de correo electrónico sin requerir registro

He pasado un tiempo de calidad revisando el código. Creo que algo como esto (advertencia: es muy probable que no funcione ya que aún no lo he probado) funcionaría para permitir al usuario publicar una respuesta solo con un correo electrónico. Agradecería cualquier comentario que tengas.

No estoy seguro especialmente si esta es la mejor manera de crear un usuario provisional. Sin embargo, no he encontrado ningún método que cree específicamente usuarios provisionales.

class SomePluginController < ApplicationController

  # Asegúrate de que haya un usuario provisional en la base de datos
  def ensure_user

    # Comprueba si existe un usuario provisional
    user = User.where(staged: true).with_email(params[:email].strip.downcase).first

    # Crea un usuario provisional manualmente
    if !user
      user = User.new
      user.staged = true
      user.email = params[:email]
      user.active = false
      user.save!
    end
    
    user
  end

  # Observa un tema como un usuario provisional
  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

  # Responde a un tema como un usuario provisional
  def staged_reply
 
    user = ensure_user

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

  end

end
3 Me gusta