У меня проблема с автоматически сгенерированным токеном. В модели я генерирую токен автоматически, используя:
class User < ApplicationRecord
before_create :generate_confirm_token
def generate_confirm_token
self.confirm_token = generate_token
end
def generate_token
loop do
token = SecureRandom.hex(10)
break token unless User.where(confirm_token: token).exists?
end
end
После создания пользователя токен генерируется правильно, но проблема в контроллере:
class Companies::StudentsController < ApplicationController
def create
@company = Company.find(params[:company_id])
@student = @company.students.create(student_params)
raise @student.inspect
if @student.save
StudentMailer.with(student: @student).welcome_email.deliver_now
redirect_to company_students_path
else
render :new
end
end
student
содержит confirm_token
НО в params
токен подтверждения пуст.
Мне нужен токен в params
, потому что в почтовой программе я использую Find_by(params[:confirm_token])
.
Вот как я использую confirm_token
на мой взгляд. Я предполагаю, что мне нужно confirm_token
в params
, поэтому я должен иметь его также в виде:
<%= f.hidden_field :confirm_token %>