2012-10-03 9 views
10

जब कोई नया उपयोगकर्ता एक नया उपयोगकर्ता पंजीकरण फॉर्म सबमिट करता है तो उन्हें नीचे त्रुटि संदेश मिलता है। मुझे संदेह है क्योंकि devise/registrations_controller.rb मौजूद नहीं है।डेविस और रेल - डेविस में ArgumentError :: रजिस्ट्रेशन नियंत्रक #

क्या मुझे इस फ़ोल्डर संरचना और नियंत्रक को बनाने की आवश्यकता है या क्या मैं मौजूदा अस्तित्व नियंत्रक की खोज से बचने के लिए मार्ग.आरबी संशोधित कर सकता हूं?

त्रुटि:

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"=>"[email protected]", 
    "password"=>"[FILTERED]", 
    "password_confirmation"=>"[FILTERED]"}, 
    "commit"=>"Sign up"} 

routes.rb:

RailsBlog::Application.routes.draw do 

    devise_for :users 

User.rb (मॉडल):

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+\-.][email protected][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 

ट्रेस वापस - मैं एक नज़र पड़ा है लेकिन यह पता नहीं कर सकते हैं जहां मुद्दा झूठ है:

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' 

उत्तर

33

Devise::RegistrationsControllerwithin the Devise gem मौजूद है, इसलिए आपको इसे बनाने की आवश्यकता नहीं है।

अद्यतन: त्रुटि तब होती है क्योंकि आप has_secure_password है, जो घर का बना प्रमाणीकरण समाधान के लिए है का उपयोग कर रहे हैं। आपको डेविस के साथ इसकी आवश्यकता नहीं है (यह पासवर्ड की एन्क्रिप्शन को ही संभालती है)। उस रेखा से छुटकारा पाएं!

आपके ऐप को उड़ाने का कारण यह है कि यह आपके मॉडल पर एक विशेषता होने के लिए password_digest की अपेक्षा करता है, और validates its presence। जब यह सत्यापन करता है, तो यह विशेषता को पढ़ने की कोशिश करता है, लेकिन इसके बजाय यह क्या होता है, डेविस की password_digest विधि (जो पासवर्ड को तर्क के रूप में प्राप्त करने की अपेक्षा करता है, इसलिए ArgumentError उठाता है जब इसे प्राप्त नहीं होता है)।

+0

प्रश्न के लिए ट्रेस जानकारी और उपयोगकर्ता मॉडल जोड़ा गया। आपने समस्या कैसे निर्धारित की? – dmuk

+0

बैकट्रैक की 5 वीं पंक्ति यह संकेत था कि यह सत्यापन था: 'lib/active_model/validations/presence.rb: 9: 'validate' में। पहली पंक्ति उस विधि को दिखाती है जिसे गलत तरीके से कहा जा रहा था ('password_digest')। –

+0

बिल्कुल सही। मेरा दिन बचाया! +1 – djserva