Devise and Rails - ArgumentError in Devise::RegistrationsController#create

devise, ruby, ruby-on-rails, ruby-on-rails-3

Solution

The `Devise::RegistrationsController` exists within the Devise gem, so you don't need to create it.

Update: The error occurs because you are using `has_secure_password`, which is for homemade authentication solutions. You don't need it with Devise (it handles the encryption of the password itself). Get rid of that line!

The reason it causes your app to blow up is that it expects `password_digest` to be an attribute on your model, and validates its presence. When it does the validation, it tries to read the attribute, but what it gets instead is Devise's `password_digest` method (which expects to receive the password as an argument, so raises an `ArgumentError` when it doesn't get one).

Problem

When a new user submits a new user registration form they get the below error message. I suspect it because the devise/registrations_controller.rb doesn't exist. Do I need to create this folder structure and controller or can I modify the routes.rb to avoid searching for a non-existent controller? Error: ``` ArgumentError in Devise::RegistrationsController#create wrong number of arguments (0 for 1) Rails.root: C:/Users/COMPAQ/Documents/NetBeansProjects/RailsBlog Parameters: {"utf8"=>"✓", "authenticity_token"=>"xxxxxxxxxxxxxxxxxxxxxx/c=", "user"=>{"email"=>"foo@bar.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"} ``` routes.rb: ``` RailsBlog::Application.routes.draw do devise_for :users ``` User.rb (model): ``` class User < ActiveRecord::Base # Include default devise modules. Others available are: # :token_authenticatable, :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 attr_accessible :name, :email, :password, :password_confirmation has_secure_password #has_many :microposts, dependent: :destroy #has_many :relationships, foreign_key: "follower_id", dependent: :destroy #has_many :followed_users, through: :relationships, source: :followed #has_many :reverse_relationships, foreign_key: "followed_id", #class_name: "Relationship", #dependent: :destroy #has_many :followers, through: :reverse_relationships, source: :follower before_save { |user| user.email = email.downcase } before_save :create_remember_token validates :name, presence: true, length: { maximum: 50 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false } validates :password, presence: true, length: { minimum: 6 } validates :password_confirmation, presence: true def feed Micropost.from_users_followed_by(self) end def following?(other_user) relationships.find_by_followed_id(other_user.id) end def follow!(other_user) relationships.create!(followed_id: other_user.id) end def unfollow!(other_user) relationships.find_by_followed_id(other_user.id).destroy end private def create_remember_token self.remember_token = SecureRandom.urlsafe_base64 end end ``` Trace back - I have had a look but cannot determine where issue lies: ``` devise (2.1.2) lib/devise/models/database_authenticatable.rb:109:in `password_digest' activemodel (3.2.1) lib/active_model/errors.rb:254:in `block in add_on_blank' activemodel (3.2.1) lib/active_model/errors.rb:253:in `each' activemodel (3.2.1) lib/active_model/errors.rb:253:in `add_on_blank' activemodel (3.2.1) lib/active_model/validations/presence.rb:9:in `validate' activesupport (3.2.1) lib/active_support/callbacks.rb:310:in `_callback_before_185' activesupport (3.2.1) lib/active_support/callbacks.rb:484:in `_run__875543711__validate__219075599__callbacks' activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_validate_callbacks' activesupport (3.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks' activemodel (3.2.1) lib/active_model/validations.rb:212:in `run_validations!' activemodel (3.2.1) lib/active_model/validations/callbacks.rb:53:in `block in run_validations!' activesupport (3.2.1) lib/active_support/callbacks.rb:425:in `_run__875543711__validation__219075599__callbacks' activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_validation_callbacks' activesupport (3.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks' activemodel (3.2.1) lib/active_model/validations/callbacks.rb:53:in `run_validations!' activemodel (3.2.1) lib/active_model/validations.rb:179:in `valid?' activerecord (3.2.1) lib/active_record/validations.rb:69:in `valid?' activerecord (3.2.1) lib/active_record/validations.rb:77:in `perform_validations' activerecord (3.2.1) lib/active_record/validations.rb:50:in `save' activerecord (3.2.1) lib/active_record/attribute_methods/dirty.rb:22:in `save' activerecord (3.2.1) lib/active_record/transactions.rb:241:in `block (2 levels) in save' activerecord (3.2.1) lib/active_record/transactions.rb:295:in `block in with_transaction_returning_status' activerecord (3.2.1) lib/active_record/connection_adapters/abstract/database_statements.rb:190:in `transaction' activerecord (3.2.1) lib/active_record/transactions.rb:208:in `transaction' activerecord (3.2.1) lib/active_record/transactions.rb:293:in `with_transaction_returning_status' activerecord (3.2.1) lib/active_record/transactions.rb:241:in `block in save' activerecord (3.2.1) lib/active_record/transactions.rb:252:in `rollback_active_record_state!' activerecord (3.2.1) lib/active_record/transactions.rb:240:in `save' devise (2.1.2) app/controllers/devise/registrations_controller.rb:15:in `create' actionpack (3.2.1) lib/action_controller/metal/implicit_render.rb:4:in `send_action' actionpack (3.2.1) lib/abstract_controller/base.rb:167:in `process_action' actionpack (3.2.1) lib/action_controller/metal/rendering.rb:10:in `process_action' actionpack (3.2.1) lib/abstract_controller/callbacks.rb:18:in `block in process_action' activesupport (3.2.1) lib/active_support/callbacks.rb:436:in `_run__853675117__process_action__862668662__callbacks' activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks' activesupport (3.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.2.1) lib/abstract_controller/callbacks.rb:17:in `process_action' actionpack (3.2.1) lib/action_controller/metal/rescue.rb:29:in `process_action' actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action' activesupport (3.2.1) lib/active_support/notifications.rb:123:in `block in instrument' activesupport (3.2.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument' activesupport (3.2.1) lib/active_support/notifications.rb:123:in `instrument' actionpack (3.2.1) lib/action_controller/metal/instrumentation.rb:29:in `process_action' actionpack (3.2.1) lib/action_controller/metal/params_wrapper.rb:205:in `process_action' activerecord (3.2.1) lib/active_record/railties/controller_runtime.rb:18:in `process_action' actionpack (3.2.1) lib/abstract_controller/base.rb:121:in `process' actionpack (3.2.1) lib/abstract_controller/rendering.rb:45:in `process' actionpack (3.2.1) lib/action_controller/metal.rb:203:in `dispatch' actionpack (3.2.1) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' actionpack (3.2.1) lib/action_controller/metal.rb:246:in `block in action' actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:66:in `call' actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:66:in `dispatch' actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:30:in `call' actionpack (3.2.1) lib/action_dispatch/routing/mapper.rb:40:in `call' journey (1.0.4) lib/journey/router.rb:68:in `block in call' journey (1.0.4) lib/journey/router.rb:56:in `each' journey (1.0.4) lib/journey/router.rb:56:in `call' actionpack (3.2.1) lib/action_dispatch/routing/route_set.rb:589:in `call' warden (1.2.1) lib/warden/manager.rb:35:in `block in call' warden (1.2.1) lib/warden/manager.rb:34:in `catch' warden (1.2.1) lib/warden/manager.rb:34:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' rack (1.4.1) lib/rack/etag.rb:23:in `call' rack (1.4.1) lib/rack/conditionalget.rb:35:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/head.rb:14:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/params_parser.rb:21:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/flash.rb:242:in `call' rack (1.4.1) lib/rack/session/abstract/id.rb:205:in `context' rack (1.4.1) lib/rack/session/abstract/id.rb:200:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/cookies.rb:338:in `call' activerecord (3.2.1) lib/active_record/query_cache.rb:64:in `call' activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:443:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `_run__805649291__call__219075599__callbacks' activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback' activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_call_callbacks' activesupport (3.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks' actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:27:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/reloader.rb:65:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/remote_ip.rb:31:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' railties (3.2.1) lib/rails/rack/logger.rb:26:in `call_app' railties (3.2.1) lib/rails/rack/logger.rb:16:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/request_id.rb:22:in `call' rack (1.4.1) lib/rack/methodoverride.rb:21:in `call' rack (1.4.1) lib/rack/runtime.rb:17:in `call' activesupport (3.2.1) lib/active_support/cache/strategy/local_cache.rb:72:in `call' rack (1.4.1) lib/rack/lock.rb:15:in `call' actionpack (3.2.1) lib/action_dispatch/middleware/static.rb:53:in `call' railties (3.2.1) lib/rails/engine.rb:479:in `call' railties (3.2.1) lib/rails/application.rb:220:in `call' rack (1.4.1) lib/rack/content_length.rb:14:in `call' railties (3.2.1) lib/rails/rack/log_tailer.rb:14:in `call' rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service' C:/RUBY/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service' C:/RUBY/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' C:/RUBY/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread' ```

Original source