【问题标题】:NoMethodError: undefined method `[]' for false:FalseClassNoMethodError:未定义的方法 `[]' for false:FalseClass
【发布时间】:2011-08-23 19:21:22
【问题描述】:

这里是日志

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

如果您发现这里有任何问题,请告诉我

【问题讨论】:

  • User类的定义是什么?
  • 试试save(:validate=&gt; false)
  • @apneadiving 谢谢它对我有用:)
  • @umair:刚刚发布为答案。请采纳

标签: ruby-on-rails mongodb rubygems mongoid


【解决方案1】:

尝试:

u.save(:validate=> false)

【讨论】:

  • 这并没有真正解决根本问题,不是吗?把你的头埋在沙子里只会让这个问题出现在其他地方
  • @Bill Leeper:OP 之前已经尝试跳过验证,但使用了旧语法 u.save(false)。由于语法错误而出现错误消息。
【解决方案2】:

我在发布我的对象并在 Rails 3.0 中收到错误:

未定义的方法 `[]' for false:FalseClass

但是在我更改代码后现在可以找到:

save(false)

到:

save(:validate=> false)

【讨论】:

  • 这个答案除了被接受之外,如何添加新信息?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 2016-08-16
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多