我是Mongo的新手。我已经从this来源安装了Mongodb。我正在使用mongodb进行Rails应用程序。启动mongodb和rails后应用程序加载正常。但是,当我尝试登录时失败。当我尝试在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)
这是一个简短的错误:
数据库命令'创建'失败:{" ok" => 0.0," errmsg" =>"集合已经存在","代码" => 48 }
并且,完整的应用程序错误跟踪:
mongo(1.3.1)lib / mongo / db.rb:506:在
command' mongo (1.3.1) lib/mongo/db.rb:284:in
create_collection' mongoid(2.2.1)lib / mongoid / collections / master.rb:41:ininitialize' mongoid (2.2.1) lib/mongoid/collection.rb:127:in
new' mongoid(2.2.1)lib / mongoid / collection.rb:127:在master' mongoid (2.2.1) lib/mongoid/collection.rb:60:in
find_one' mongoid(2.2.1)lib / mongoid / contexts / mongo.rb:164:infirst' mongoid (2.2.1) lib/mongoid/criteria.rb:42:in
one' mongoid(2.2.1)lib / mongoid / criterion / inclusion.rb:104:infind' mongoid (2.2.1) lib/mongoid/finders.rb:83:in
find' actionpack(3.0.3)lib / action_controller / metal / implicit_render.rb:4:在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:在process_action'中的process_action' actionpack (3.0.3) lib/abstract_controller/callbacks.rb:18:in
块中 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:在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:在block in process_action' activesupport (3.0.3) lib/active_support/notifications.rb:52:in
块中的仪器' activesupport(3.0.3)lib / active_support / notifications / instrumenter.rb:21:ininstrument' activesupport (3.0.3) lib/active_support/notifications.rb:52:in
instrument' actionpack(3.0.3)lib / action_controller / metal / instrumentation.rb:29:在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:在process' actionpack (3.0.3) lib/abstract_controller/rendering.rb:40:in
进程' actionpack(3.0.3)lib / action_controller / metal.rb:138:在dispatch' actionpack (3.0.3) lib/action_controller/metal/rack_delegation.rb:14:in
发送' actionpack(3.0.3)lib / action_controller / metal.rb:178:block in action' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:62:in
来电' actionpack(3.0.3)lib / action_dispatch / routing / route_set.rb:62:indispatch' 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:在block in call' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:93:in
块中识别' rack-mount(0.6.14)lib / rack / mount / code_generation.rb:75:inoptimized_each' rack-mount (0.6.14) lib/rack/mount/code_generation.rb:92:in
识别' rack-mount(0.6.14)lib / rack / mount / route_set.rb:139:call' actionpack (3.0.3) lib/action_dispatch/routing/route_set.rb:492:in
来电' mongoid(2.2.1)lib / rack / mongoid / middleware / identity_map.rb:33:inblock 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:incall' 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:incall' rack (1.2.4) lib/rack/methodoverride.rb:24:in
call' actionpack(3.0.3)lib / action_dispatch / middleware / params_parser.rb:21:incall' 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:在call' actionpack (3.0.3) lib/action_dispatch/middleware/cookies.rb:295:in
电话' actionpack(3.0.3)lib / action_dispatch / middleware / callbacks.rb:46:inblock 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:incall' rack (1.2.4) lib/rack/sendfile.rb:106:in
call' actionpack(3.0.3)lib / action_dispatch / middleware / remote_ip.rb:48:incall' actionpack (3.0.3) lib/action_dispatch/middleware/show_exceptions.rb:46:in
call' railties(3.0.3)lib / rails / rack / logger.rb:13:incall' rack (1.2.4) lib/rack/runtime.rb:17:in
来电' activesupport(3.0.3)lib / active_support / cache / strategy / local_cache.rb:72:incall' rack (1.2.4) lib/rack/lock.rb:11:in
阻止呼叫' rack(1.2.4)lib / rack / lock.rb:11:insynchronize' rack (1.2.4) lib/rack/lock.rb:11:in
call' actionpack(3.0.3)lib / action_dispatch / middleware / static.rb:30:incall' railties (3.0.3) lib/rails/application.rb:168:in
call' railties(3.0.3)lib / rails / application.rb:77:inmethod_missing' railties (3.0.3) lib/rails/rack/log_tailer.rb:14:in
来电' rack(1.2.4)lib / rack / content_length.rb:13:incall' 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:inservice' /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在start_thread中阻止'
非常感谢任何帮助。
答案 0 :(得分:0)
在检查代码和谷歌搜索后,我发现每个请求都发送了一个特殊字符。我的请求参数是这样的:
{
"utf8"=>"✓",
"authenticity_token"=>"cAcdDOzfBgalF5em+97mTKw9DAjymfmEmG6hc+dDqhQ=",
"email"=>"super_admin_user@test.com",
"password"=>"[FILTERED]",
"commit"=>"Login"
}
不确定是什么引发了'â''。但谷歌的一篇文章称,2.2系列中存在与此相关的错误,并且已在以后的版本中修复。
所以,我发现我的 mongoid 版本为2.2.1,一旦升级,问题就解决了。
注意:我是 mongoid 的新手,并提供了一个知识匮乏的解决方案。如果需要,请添加详细信息。