Rails Devise User Exists on empty DB

devise, rake, ruby-on-rails

Solution

The user exists query is from the validator checking that there isn't a user with the same email you are trying to register. There is never an INSERT query, so your user is never being registered.

It is probably a validation failing. In this case your password may be too short (the default Devise password length validation requires at least a length of 8, yours is only 4).

You are receiving a successful 200 response because it is redirecting back to the registration with a flash message explaining what validations failed.

Problem

I am trying to create a User through Devise but am running into issues. `home#land` ``` def land @resource = User.new @devise_mapping = Devise.mappings[:user] end ``` `land.html.haml` ``` = form_for @resource, :as => :user, :url => registration_path(:user), :remote => true do = label_tag 'user[email]', raw("<h3>Stay Informed!</h3>") = text_field_tag 'user[email]', nil, {:placeholder => "Your email", :required => true} %input(type="submit" name="commit" value="Add") ``` `user.rb` ``` class User < ActiveRecord::Base before_validation(:on => :create) do self.password = "none" self.password_confirmation = "none" end # Include default devise modules. Others available are: # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable # Setup accessible (or protected) attributes for your model attr_accessible :email, :password, :password_confirmation, :remember_me end ``` Default Devise::RegistrationsController is being used. This appears on submission: `development.log` ``` Started POST "/users" for 127.0.0.1 at 2013-04-24 20:49:46 -0300 Processing by Devise::RegistrationsController#create as JS Parameters: {"utf8"=>"✓", "user"=>{"email"=>"me@mjohnst.com"}, "commit"=>"Add"} [1m[35m (0.3ms)[0m BEGIN [1m[36mUser Exists (0.5ms)[0m [1mSELECT 1 AS one FROM "users" WHERE "users"."email" = 'me@mjohnst.com' LIMIT 1[0m [1m[35m (0.2ms)[0m ROLLBACK Rendered devise/registrations/create.js (0.4ms) Completed 200 OK in 84ms (Views: 4.1ms | ActiveRecord: 1.0ms) ``` However, in `rails console`: ``` 2.0.0p0 :011 > User.all User Load (0.5ms) SELECT "users".* FROM "users" => #<ActiveRecord::Relation []> ``` and `localhost:5000/users` is completely empty... Why am I getting a User Exists and ROLLBACK when there are no users in my DB?

Original source