2011-08-23 156 views
7

这里有日志NoMethodError:未定义的方法`[]”假:FalseClass

umair-2:game-minion umairejaz$ rails c 
/Users/umairejaz/.rvm/gems/[email protected]/gems/railties-3.0.7/lib/rails/script_rails_loader.rb:11: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777 
/Users/umairejaz/.rvm/gems/[email protected]/gems/bundler-1.0.18/lib/bundler/runtime.rb:136: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777 
Loading development environment (Rails 3.0.7) 
ruby-1.9.2-p290 :001 > u = User.new 
=> #<User _id: 4e53f783713931a571000001, _type: nil, username: nil, first_name: nil, last_name: nil, email: nil, password: nil, password_salt: nil, password_hash: nil, profile_picture: nil, facebook_id: nil, facebook_enabled: nil, facebook_access_token: nil, twitter_id: nil, twitter_enabled: nil, twitter_access_token: nil, twitter_access_secret: nil, points: nil, remember_token: nil, remember_token_expires_at: nil> 
ruby-1.9.2-p290 :002 > u.username = "umair" 
=> "umair" 
ruby-1.9.2-p290 :003 > u.save(false) 
NoMethodError: undefined method `[]' for false:FalseClass 
from /Users/umairejaz/.rvm/gems/[email protected]/gems/mongoid-2.1.9/lib/mongoid/persistence/operations.rb:143:in `validating?' 
from /Users/umairejaz/.rvm/gems/[email protected]/gems/mongoid-2.1.9/lib/mongoid/persistence/insertion.rb:23:in `block in prepare' 
from /Users/umairejaz/.rvm/gems/[email protected]/gems/mongoid-2.1.9/lib/mongoid/persistence/insertion.rb:22:in `tap' 
from /Users/umairejaz/.rvm/gems/[email protected]/gems/mongoid-2.1.9/lib/mongoid/persistence/insertion.rb:22:in `prepare' 
from /Users/umairejaz/.rvm/gems/[email protected]/gems/mongoid-2.1.9/lib/mongoid/persistence/operations/insert.rb:26:in `persist' 
from /Users/umairejaz/.rvm/gems/[email protected]/gems/mongoid-2.1.9/lib/mongoid/persistence.rb:44:in `insert' 
from /Users/umairejaz/.rvm/gems/[email protected]/gems/mongoid-2.1.9/lib/mongoid/persistence.rb:142:in `upsert' 
from (irb):3 
from /Users/umairejaz/.rvm/gems/[email protected]/gems/railties-3.0.7/lib/rails/commands/console.rb:44:in `start' 
from /Users/umairejaz/.rvm/gems/[email protected]/gems/railties-3.0.7/lib/rails/commands/console.rb:8:in `start' 
from /Users/umairejaz/.rvm/gems/[email protected]/gems/railties-3.0.7/lib/rails/commands.rb:23:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 
ruby-1.9.2-p290 :004 > 

,当我试图挽救一些对象,我得到这个上面的响应。 Follwoing是mongoid和蒙戈我的宝石版本,我认为是它的mongoid.yml的问题,但不知道我的阳明海运是完全正常的

使用BSON(1.3.1) 使用bson_ext(1.3.1) 使用蒙戈(1.3.1) 安装mongoid(2.1.9)

mongoid.yml

defaults: &defaults 
    host: localhost 

development: 
    <<: *defaults 
    database: gm_development 

test: 
    <<: *defaults 
    database: gm_test 
production: 
    host: <%= ENV['MONGOID_HOST'] %> 
    port: <%= ENV['MONGOID_PORT'] %> 
    username: <%= ENV['MONGOID_USERNAME'] %> 
    password: <%= ENV['MONGOID_PASSWORD'] %> 
    database: <%= ENV['MONGOID_DATABASE'] %> 
    uri: mongodb://username:[email protected]:10029/appid 

请让你发现任何错误在此

+0

User类的定义是什么? –

+1

尝试'保存(:验证=> false)' – apneadiving

+1

'u.save(:validate => false)' – rubish

回答

29

试试我知道:

u.save(:validate=> false) 
+2

这不是真的解决底层问题吗?坚持让自己在沙滩上行走就会在其他地方出现这个问题 –

+2

@Bill Leeper:OP已经尝试过跳过验证,但使用了旧的语法'u.save(false)'。出现错误消息是由于语法错误。 – rekado

5

我张贴我的目标并获得对Rails 3.0的错误:

undefined method `[]' for false:FalseClass

但现在的工作找到后,我从我的代码更改:

save(false) 

到:

save(:validate=> false) 
+0

这个答案除了接受之外还添加了新的信息吗? –

相关问题