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

Другие вопросы по тегам