Ich habe den Mailer-Aufruf in meinem Benutzermodell auf einen benutzerdefinierten Devise-Controller verschoben und erhalte plötzlich keine E-Mails mehr in der Entwicklung. SMTP ist alles in config eingerichtet und funktioniert einwandfrei (ich weiß, weil es funktioniert, wenn der Mailer-Aufruf im Benutzermodell als :after_create
ist - was übrigens nicht in der Produktion funktioniert).Warum bekomme ich "User Exists" zweimal, wenn ich die Entwicklungsausgabe auf Bash mit Tail aufzeichne?
Also lief ich tail -f log/development.log
, traf vorlegen, um zu sehen, ob ein Routing-Konflikt durch meine Devise Erweiterung verursacht es gibt, und diese Aktion in der Ausgabe meiner #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
Sieht aus wie meine Devise ist nicht sogar benutzt?
Hier ist die #create Aktion
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
Mein Benutzermodell
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
Und dann ist mein Weg devise_for :users, :controller => { registrations: 'registrations'}
Also ich denke, es eine zweiteilige Frage ist:
- Ist das Zweifache? le
User Exists
indikativ für etwas? - Was ist falsch an meinem Setup? Ich habe die offizielle Rail docs zum T. gefolgt
nur um ein bisschen mehr Kontext hinzuzufügen, können Sie Ihr 'user' Modell hinzufügen? – oreoluwa
@oreoluwa hinzugefügt – sabaeus