コードをじっくり調べてみました。ユーザーがメールだけで返信できるようにするには、次のようなもの(注意:まだ試していないので、おそらく動作しません)が機能すると思います。何かコメントがあれば幸いです。
特に、ステージングされたユーザーを作成する最良の方法かどうかはわかりません。ステージングされたユーザーを具体的に作成する方法は見つかりませんでした。
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