私は、ニュースレターにサインアップする人々が無料の電子ブックを手に入れることができるウェブサイトを持っているとしましょう。彼らがそれを済ませたら、私はUserモデルを作成し、Edit Formを表示して、それら。Session in Action Mailer - それを渡す方法は?
最初のページにパスワードやその他の詳細を追加する必要はありません。コンバージョンが減少するため、追加情報も必要ないためです。また、編集ページに永久にアクセスすることを望んでいないので、セッションを割り当てて編集ページでそれを認識することで解決しました。
class UsersController < ApplicationController
def create
user = User.new(user_params)
if user.save
session[:user_id] = user.id
UserWorker.perform_in(5.minutes, 'new_user', user.id)
redirect to edit form...
end
end
def edit
@user = User.find(session[:user_id])
end
def update
@user = User.find(session[:user_id])
@user.update!(user_edit_params)
redirect_to user_thank_you_path
end
end
しかし、彼らは10分以内に余分な情報を追加しない場合、私は編集フォームへのリンクをActiveMailerを経由してそれらに電子メールを送信し、そうするように依頼します:これは私のコントローラです。
セッションを通してユーザーを識別し、フォームを表示するにはどうすればよいですか - どのようにUser.find(ActionMailer経由でセッション[:user_id])を実行できますか?それは実際に正しい方法ですか、別の方法をお勧めしますか?
ありがとうハッサニン。私はちょうど私の質問が非常にはっきりしていないので、私はそれを編集したことに気づいた私は5分後にメールを解決するためにこの問題を解決しましたが、編集フォームへのリンクを送信してユーザーを特定する方法がわかりません - ActionMailer経由でセッションを渡すことはできません。 – Dudis
@Dudis心配はありません。メーラーに 'user_id'を渡すことができます。メーラーの中で 'edit_user_url(user_id)'を使うこともできます。 –