Я переместил вызов почтовой программы в моей модели пользователя на пользовательский контроллер Devise и внезапно больше не получал электронные письма в процессе разработки. SMTP настроен в конфигурации и работает корректно (я знаю, потому что он работает, когда вызов почтовой программы находится в модели пользователя как :after_create
, который, кстати, не будет работать на производстве).Почему я получаю «Пользователь существует» дважды при регистрации выходных данных разработки в bash с хвостом?
Так что я побежал tail -f log/development.log
, ударил представить, чтобы увидеть, если есть конфликт маршрутизации, вызванные моим расширением завещать, и нашел в выходе моего #create действия
Started POST "/users" for ::1 at 2016-07-03 14:48:06 -0700
Processing by Devise::RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"blahblah", "user"=>{"email"=>"[email protected]", "firstname"=>"i", "lastname"=>"i", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}
(0.3ms) BEGIN
User Exists (0.4ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1
User Exists (0.3ms) SELECT 1 AS one FROM "users" WHERE "users"."email" = '[email protected]' LIMIT 1
SQL (0.6ms) INSERT INTO "users" ("email", "encrypted_password", "firstname", "lastname", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id" [["email", "[email protected]"], ["encrypted_password", "$2a$10$8YxM8UHDnwS8lcxhiE6Gn.VAbLo8bE8HggCQVuIPl8XYXaevHt8F."], ["firstname", "i"], ["lastname", "i"], ["created_at", "2016-07-03 21:48:06.899722"], ["updated_at", "2016-07-03 21:48:06.899722"]]
(0.4ms) COMMIT
выглядит как мои расширения DEViSE не даже будучи использованным?
Вот действие #create
class RegistrationsController < Devise::RegistrationsController
def create
@user = User.new(sign_up_params)
if @user.save
UserMailer.new_user(@user).deliver_now
#AdminMailer.new_user_waiting_for_approval(@admin).deliver_now
else
render :action => 'new'
end
end
private
def sign_up_params
params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation, :approved)
end
end
Моя модель пользователя
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :items, dependent: :destroy
validates :email, presence: true, uniqueness: true, if: -> { self.email.present? }
validates :firstname, presence: true
validates :lastname, presence: true
def active_for_authentication?
super && approved?
end
def inactive_message
if !approved?
:not_approved
else
super # Use whatever other message
end
end
end
И тогда мой маршрут devise_for :users, :controller => { registrations: 'registrations'}
Так что я предполагаю, что это две части вопроса:
- Является ли это le
User Exists
указывает на что-нибудь? - Что не так с моей настройкой? Я следовал документы официального рельса к Т.
Чтобы добавить немного больше контекста, вы могли бы добавить свою модель пользователя? – oreoluwa
@oreoluwa добавлено – sabaeus