NoMethodError:FalseClass没有定义“[]”方法

7
这里是日志。
umair-2:game-minion umairejaz$ rails c
/Users/umairejaz/.rvm/gems/ruby-1.9.2-p290@rails3/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/ruby-1.9.2-p290@rails3/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/ruby-1.9.2-p290@rails3/gems/mongoid-2.1.9/lib/mongoid/persistence/operations.rb:143:in `validating?'
from /Users/umairejaz/.rvm/gems/ruby-1.9.2-p290@rails3/gems/mongoid-2.1.9/lib/mongoid/persistence/insertion.rb:23:in `block in prepare'
from /Users/umairejaz/.rvm/gems/ruby-1.9.2-p290@rails3/gems/mongoid-2.1.9/lib/mongoid/persistence/insertion.rb:22:in `tap'
from /Users/umairejaz/.rvm/gems/ruby-1.9.2-p290@rails3/gems/mongoid-2.1.9/lib/mongoid/persistence/insertion.rb:22:in `prepare'
from /Users/umairejaz/.rvm/gems/ruby-1.9.2-p290@rails3/gems/mongoid-2.1.9/lib/mongoid/persistence/operations/insert.rb:26:in `persist'
from /Users/umairejaz/.rvm/gems/ruby-1.9.2-p290@rails3/gems/mongoid-2.1.9/lib/mongoid/persistence.rb:44:in `insert'
from /Users/umairejaz/.rvm/gems/ruby-1.9.2-p290@rails3/gems/mongoid-2.1.9/lib/mongoid/persistence.rb:142:in `upsert'
from (irb):3
from /Users/umairejaz/.rvm/gems/ruby-1.9.2-p290@rails3/gems/railties-3.0.7/lib/rails/commands/console.rb:44:in `start'
from /Users/umairejaz/.rvm/gems/ruby-1.9.2-p290@rails3/gems/railties-3.0.7/lib/rails/commands/console.rb:8:in `start'
from /Users/umairejaz/.rvm/gems/ruby-1.9.2-p290@rails3/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 > 

我尝试保存某个对象时,出现了上述响应。以下是我的mongoid和mongo gem版本,我认为这是mongoid.yml的问题,但不能确定,因为我的yml文件完全正常。
使用bson(1.3.1) 使用bson_ext(1.3.1) 使用mongo(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:password@staff.mongohq.com:10029/appid

如果您在这个内容中发现任何错误,请告诉我。


用户类的定义是什么? - David Grayson
1
try save(:validate=> false) - apneadiving
2个回答

30

尝试:

u.save(:validate=> false)

3
这真的没有解决根本问题,对吧?掩耳盗铃只会让这个问题在其他地方再次出现。 - Bill Leeper
2
@Bill Leeper:OP之前已尝试跳过验证,但使用了旧的语法u.save(false)。由于语法错误,错误消息出现了。 - user519736

4

我在Rails 3.0中提交我的对象时出错:

未定义方法“[]”,针对false:FalseClass

但是当我把代码改为下面这样时,现在已经可以正常运行了:

save(false)

to:

save(:validate=> false)

除了被接受的答案之外,这个回答还提供了什么新信息? - Andre Figueiredo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接