我在尝试使用Mongoid(v 3.1.4)将一个(非常简单的)实体持久化到MongoDB(v 2.4.4)时遇到了问题。我在OS X上使用MRI和Ruby 2.0.0-p195。
这是我的班级(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:在'method_missing'中:未定义的方法`has_key?' for 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')但是,集合和文档失败。我已经尝试过“创造!”和'safe.save!'无济于事。
我尝试实现has_key?方法,我找不到任何文档,所以我在这里有点亏。
与往常一样,非常感谢任何帮助。
此致
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!
答案 0 :(得分:3)
问题在于你的initialize
方法:你正在覆盖mongoid提供的方法,所以某些mongoid的内部结构没有被设置。
您需要删除初始化方法或通过super