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