Я пытаюсь настроить подтверждение регистрации по электронной почте для пользователей. Я использую устройство для аутентификации. Но я не мог получить доступ к сохраненному пользовательскому ресурсу с контроллера устройства, хотя я безуспешно пробовал несколько средств. Если кто-то может помочь, это здорово !!!
Я пытаюсь отправить ссылку подтверждения зарегистрированному пользователю после того, как пользователь был сохранен. Но мне не удалось получить новые пользовательские записи, как любую обычную переменную экземпляра в контроллере устройства.
Теперь мой контроллер регистрации пользователей выглядит так:
class Users::RegistrationsController < Devise::RegistrationsController
before_action :select_plan, only: :new
# Extend the default Devise gem behaviour so that
# the users signing up with a Pro account(plan_id 2) should be
# saved with a Stripe subscription function
# Otherwise, save the sign up as usual.
def create
super do |resource|
# @user = User.new(configure_permitted_parameters)
if params[:plan]
resource.plan_id = params[:plan]
if resource.plan_id == 2
resource.save_with_subscription
else
resource.save
end
//These do not works and returns null
//@user = User.find_by_email(params[:email])
//@user = User.find(params[:id]
//@user = resource
UserMailer.registration_confirmation(params[:email]).deliver
flash[:success] = "Please confirm your email address to continue"
redirect_to root_url
end
end
end
private
def select_plan
unless (params[:plan] == '1' || params[:plan] == '2')
flash[:notice] = "Please select a membership plan to sign up."
redirect_to root_url
end
end
end
Модель пользователя:
class User < ApplicationRecord
before_create :confirmation_token
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
belongs_to :plan
has_one :profile
attr_accessor :stripe_card_token
# If Pro user passes the validation for email, password etc. then call Stripe
# and tell Stripe to add a subscription by charging customer's card
# Stripe then returns a customer token in response
# Store the token id as customer id and save the user
def save_with_subscription
if valid?
customer = Stripe::Customer.create(description: email, plan: plan_id, card: stripe_card_token)
self.stripe_customer_token = customer.id
save!
end
end
private
def confirmation_token
if self.confirm_token.blank?
self.confirm_token = SecureRandom.urlsafe_base64.to_s
end
end
def email_activate
self.email_confirmed = true
self.confirm_token = nil
save!(:validate => false)
end
end
У кого-нибудь есть идея отправить электронное письмо с подтверждением от контроллера устройства? Заранее спасибо !!!