У меня есть приложение rails 4, которое использует devise gem для аутентификации.
У меня есть validates_uniqueness_of: проверка электронной почты в user.rb
Несмотря на эту проверку, я вижу, что в таблице пользователей создаются повторяющиеся записи.
Странная часть - эти дубликаты создаются во время входа в систему. Для пользователя, выполняющего вход.
Я звоню в after_action, чтобы обновить поле входа в систему, например, -
Это находится в session_controller.rb -
after_action :update_login_terms_and_privacy_accepted_at, only: [:create]
def create
if params[:user][:terms_and_condition].present? && params[:user][:terms_and_condition]=="0"
self.resource = resource_class.new(sign_in_params)
reset_session
flash[:error] = "Please accept our terms and conditions"
redirect_to new_user_session_url
elsif Rails.env.production? && !verify_recaptcha
self.resource = resource_class.new(sign_in_params)
reset_session
flash[:error] = "Incorrect Captcha. Please try Again"
redirect_to new_user_session_url
else
if current_user.try(:is_allowed_enterprise_dashboard?)
current_user.update(uuid: SecureRandom.uuid)
cookies[:uuid] = current_user.uuid
end
super
end
end
private
def update_login_terms_and_privacy_accepted_at
self.resource.update_attribute("login_terms_and_privacy_accepted_at", Time.now) if self.resource.login_terms_and_privacy_accepted_at.nil?
end
Вот что я вижу в логах -
Started POST "/users/sign_in" for 104.143.209.101 at 2019-06-24 18:24:50 +0000
I, [2019-06-24T18:24:50.783420 #32598] INFO -- : Processing by SessionsController#create as HTML
I, [2019-06-24T18:24:50.783508 #32598] INFO -- : Parameters: {"utf8"=>"✓", "authenticity_token"=>"F8BrJRihhHuNA2a8qe82MbXg6rq/sGSVtFaB3xqzHTMqTSEkU+kvQZNs1sLSLEhCRvH29bof8HgFsyANBuliJA==", "user"=>{"email"=>"su***@gmail.com", "password"=>"[FILTERED]", "terms_and_condition"=>"1", "remember_me"=>"0"}, "g-recaptcha-response"=>"", "commit"=>"Log in"}
I, [2019-06-24T18:24:50.980455 #32598] INFO -- : Redirected to https://gici.com/users/sign_in
I, [2019-06-24T18:24:51.064536 #32598] INFO -- :
Sent mail to su***@gmail.com (57.3ms)
Письмо, отправленное в последней строке журнала, относится к созданию дубликата записи пользователя.
Что я здесь не так делаю?