Mongoid 3.1.4 неопределенный метод 'has_key?' при вызове "Document.create"
У меня возникла проблема при попытке использовать Mongoid (v 3.1.4) для сохранения (действительно простой) сущности в MongoDB (v 2.4.4). Я использую MRI и Ruby 2.0.0-p195 на OS X.
Вот мой класс (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/attribute.rb:320:in 'method_missing': неопределенный метод `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!
1 ответ
Проблема ваша initialize
Метод: вы переопределяете тот, что предоставлен mongoid, поэтому некоторые внутренние компоненты mongoid не настраиваются.
Вам нужно либо удалить свой метод инициализации, либо вызвать реализацию mongoid через super