2015-12-30 34 views
0

我是Mongo的新手。我已經從this源安裝了Mongodb。我正在使用MongoDB for Rails應用程序。啓動mongodb和rails後,該應用程序加載正常。但是,我嘗試登錄時失敗。當我嘗試在rails控制檯中執行某些操作時,會發生同樣的情況。'Mongo :: OperationFailure'在Rails中的一些操作

這裏的型號代碼:

def self.authenticate(email, password) 
    user = find(:first, :conditions => {:email => email}) 
    if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt) 
     user 
    else 
    nil 
    end 
    end 

其在if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)

這裏失敗是短錯誤:

Database command 'create' failed: {"ok"=>0.0, "errmsg"=>"collection already exists", "code"=>48}

而且,完整的應用程序錯誤跟蹤:

mongo (1.3.1) lib/mongo/db.rb:506:in command' mongo (1.3.1) lib/mongo/db.rb:284:in create_collection' mongoid (2.2.1) lib/mongoid/collections/master.rb:41:in initialize' mongoid (2.2.1) lib/mongoid/collection.rb:127:in new' mongoid (2.2.1) lib/mongoid/collection.rb:127:in master' mongoid (2.2.1) lib/mongoid/collection.rb:60:in find_one' mongoid (2.2.1) lib/mongoid/contexts/mongo.rb:164:in first' mongoid (2.2.1) lib/mongoid/criteria.rb:42:in one' mongoid (2.2.1) lib/mongoid/criterion/inclusion.rb:104:in find' mongoid (2.2.1) lib/mongoid/finders.rb:83:in find' actionpack (3.0.3) lib/action_controller/metal/implicit_render.rb:4:in send_action' actionpack (3.0.3) lib/abstract_controller/base.rb:151:in process_action' actionpack (3.0.3) lib/action_controller/metal/rendering.rb:11:in process_action' actionpack (3.0.3) lib/abstract_controller/callbacks.rb:18:in block in process_action' activesupport (3.0.3) lib/active_support/callbacks.rb:435:in _run__902337259577170033__process_action__4476240526817474042__callbacks' activesupport (3.0.3) lib/active_support/callbacks.rb:409:in _run_process_action_callbacks' activesupport (3.0.3) lib/active_support/callbacks.rb:93:in run_callbacks' actionpack (3.0.3) lib/abstract_controller/callbacks.rb:17:in process_action' actionpack (3.0.3) lib/action_controller/metal/instrumentation.rb:30:in block in process_action' activesupport (3.0.3) lib/active_support/notifications.rb:52:in block in instrument' activesupport (3.0.3) lib/active_support/notifications/instrumenter.rb:21:in instrument' activesupport (3.0.3) lib/active_support/notifications.rb:52:in instrument' actionpack (3.0.3) lib/action_controller/metal/instrumentation.rb:29:in process_action' actionpack (3.0.3) lib/action_controller/metal/rescue.rb:17:in process_action' actionpack (3.0.3) lib/abstract_controller/base.rb:120:in process' actionpack (3.0.3) lib/abstract_controller/rendering.rb:40:in process' actionpack (3.0.3) lib/action_controller/metal.rb:138:in dispatch' actionpack (3.0.3) lib/action_controller/metal/rack_delegation.rb:14:in dispatch' actionpack (3.0.3) lib/action_controller/metal.rb:178:in block in action' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:62:in call' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:62:in dispatch' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:27:in call' rack-mount (0.6.14) lib/rack/mount/route_set.rb:148:in block in call' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:93:in block in recognize' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:75:in optimized_each' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:92:in recognize' rack-mount (0.6.14) lib/rack/mount/route_set.rb:139:in call' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:492:in call' mongoid (2.2.1) lib/rack/mongoid/middleware/identity_map.rb:33:in block in call' mongoid (2.2.1) lib/mongoid.rb:130:in unit_of_work' mongoid (2.2.1) lib/rack/mongoid/middleware/identity_map.rb:33:in call' actionpack (3.0.3) lib/action_dispatch/middleware/best_standards_support.rb:17:in call' actionpack (3.0.3) lib/action_dispatch/middleware/head.rb:14:in call' rack (1.2.4) lib/rack/methodoverride.rb:24:in call' actionpack (3.0.3) lib/action_dispatch/middleware/params_parser.rb:21:in call' actionpack (3.0.3) lib/action_dispatch/middleware/flash.rb:182:in call' actionpack (3.0.3) lib/action_dispatch/middleware/session/abstract_store.rb:149:in call' actionpack (3.0.3) lib/action_dispatch/middleware/cookies.rb:295:in call' actionpack (3.0.3) lib/action_dispatch/middleware/callbacks.rb:46:in block in call' activesupport (3.0.3) lib/active_support/callbacks.rb:415:in _run_call_callbacks' actionpack (3.0.3) lib/action_dispatch/middleware/callbacks.rb:44:in call' rack (1.2.4) lib/rack/sendfile.rb:106:in call' actionpack (3.0.3) lib/action_dispatch/middleware/remote_ip.rb:48:in call' actionpack (3.0.3) lib/action_dispatch/middleware/show_exceptions.rb:46:in call' railties (3.0.3) lib/rails/rack/logger.rb:13:in call' rack (1.2.4) lib/rack/runtime.rb:17:in call' activesupport (3.0.3) lib/active_support/cache/strategy/local_cache.rb:72:in call' rack (1.2.4) lib/rack/lock.rb:11:in block in call' rack (1.2.4) lib/rack/lock.rb:11:in synchronize' rack (1.2.4) lib/rack/lock.rb:11:in call' actionpack (3.0.3) lib/action_dispatch/middleware/static.rb:30:in call' railties (3.0.3) lib/rails/application.rb:168:in call' railties (3.0.3) lib/rails/application.rb:77:in method_missing' railties (3.0.3) lib/rails/rack/log_tailer.rb:14:in call' rack (1.2.4) lib/rack/content_length.rb:13:in call' rack (1.2.4) lib/rack/handler/webrick.rb:52:in service' /Users/reonios/.rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/webrick/httpserver.rb:138:in service' /Users/reonios/.rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/webrick/httpserver.rb:94:in run' /Users/reonios/.rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'

任何幫助,高度讚賞。

+0

你能展示模型和代碼嗎? –

+0

@HarryBomrah我已經添加了模型代碼 – raghu

回答

0

在檢查代碼並使用Google搜索後,我發現每個請求都發送了一個特殊字符。我的請求參數是這樣的:

{ 
    "utf8"=>"âœ「", 
    "authenticity_token"=>"cAcdDOzfBgalF5em+97mTKw9DAjymfmEmG6hc+dDqhQ=", 
    "email"=>"[email protected]", 
    "password"=>"[FILTERED]", 
    "commit"=>"Login" 
} 

不知道什麼觸發'â'。但谷歌的一篇文章稱,2.2系列中存在與此相關的bug,並且在更高版本中得到修復。

因此,我發現我的mongoid版本是2.2.1,一旦我升級了問題就得到了解決。

注意:mongoid是新增功能,並給出了一個最小知識解決方案。如果需要請添加細節。

相關問題