controller/api/user_controller.rb
def create
user = where(email: user_params[:email]).first
if user
if user.confirmed?
fail "already exists"
else
user.password = user_params[:password]
user.send(:generate_confirmation_token!) # protectedメソッドなのでsendを使っている
end
else
user = User.new(
email: user_params[:email],
password: user_params[:password]
)
user.skip_confirmation_notification!
user.save!
end
confirmation_token = user.instance_variable_get('@raw_confirmation_token')
confirmation_url = api_user_confirmation_url(user, confirmation_token: confirmation_token)
UserAppMailer.confirmation_instruction(user, confirmation_url).deliver
render :success
end
def user_params
params.require(:user).permit(:email, :password)
end
- 新しく作成したUserモデルのインスタンスからconfirmation_tokenを取り出します
- userインスタンスと上で取り出したconfirmation_tokenを使ってconfirmationアクションへのurlを作ります
- userにconfirmationアクションへのurlをメールで送信します
- 成功した旨のJSONレスポンスを返します
これでいけた^ ^