Подписка на тему по email без регистрации

Я потратил немного времени на изучение кода. Мне кажется, что что-то вроде этого (предупреждение: скорее всего, не будет работать, так как я ещё не пробовал) позволит пользователю опубликовать ответ, указав только адрес электронной почты. Буду благодарен за любые ваши комментарии.

Особенно я не уверен, что это лучший способ создания «промежуточного» (staged) пользователя. Я не нашёл метода, который бы специально создавал таких пользователей.

class SomePluginController < ApplicationController

  # Убедиться, что в базе данных есть промежуточный пользователь
  def ensure_user

    # Проверить, существует ли промежуточный пользователь
    user = User.where(staged: true).with_email(params[:email].strip.downcase).first

    # Создать промежуточного пользователя вручную
    if !user
      user = User.new
      user.staged = true
      user.email = params[:email]
      user.active = false
      user.save!
    end
    
    user
  end

  # Подписаться на тему как промежуточный пользователь
  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

  # Ответить на тему как промежуточный пользователь
  def staged_reply
 
    user = ensure_user

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

  end

end
4 лайка