gpt4 book ai didi

ruby - 调用 'has_key?'时Mongoid 3.1.4未定义方法 'Document.create'

转载 作者:数据小太阳 更新时间:2023-10-29 08:49:28 25 4
gpt4 key购买 nike

我在尝试使用 Mongoid (v 3.1.4) 将一个(非常简单的)实体保存到 MongoDB (v 2.4.4) 时遇到问题。我在 OS X 上使用 MRI 和 Ruby 2.0.0-p195。

这是我的类(class)(Person.rb):

require 'mongoid'

class Person
include Mongoid::Document
include Mongoid::Timestamps # currently can be ommitted

field :name, type: String

def initialize
# is empty
end

def name
@name
end

def name=(value)
@name = value
end

end

Mongoid.load!('config/mongoid.yml', :development)

user = Person.new
user.name = "John Doe"
user.create

最后一句话让我很高兴

[...]mongoid/attributes.rb:320:in 'method_missing': undefined method `has_key?'对于 nil:NilClass (NoMethodError)

这是我的“mongoid.yml”:

development:
sessions:
default:
database: rbtest
hosts:
- localhost:27017
test:
sessions:
default:
database: test
hosts:
- localhost:27017
options:
consistency: :strong
max_retries: 1
retry_interval: 0

与数据库实例的连接似乎正常,因为数据库已创建('rbtest'),但是,集合和文档失败。我已经尝试过“创造!”和“安全地保存!”无济于事。

我试过实现 has_key?方法,我找不到任何文档,所以我在这里有点不知所措。

一如既往,非常感谢任何帮助。

问候,


更新——解决方案:

@Frederik Cheung 的回答很准确。这是工作代码(根据@mu-is-too-short 的建议更新)

require 'mongoid'

class Person
include Mongoid::Document
field :name, type: String
end

Mongoid.load!('config/mongoid.yml', :development)

person = Person.new(:name => 'John Doe')
person.save!

最佳答案

问题是您的initialize 方法:您正在覆盖 mongoid 提供的方法,因此未设置 mongoid 的一些内部结构。

您需要删除初始化方法或通过 super 调用 mongoid 的实现

关于ruby - 调用 'has_key?'时Mongoid 3.1.4未定义方法 'Document.create',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16974966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com