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: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
DB が作成されているため ('rbtest')、DB インスタンスへの接続は問題ないように見えますが、コレクションとドキュメントは失敗します。私はすでに 'create!' で試しました。と「安全に保存してください!」無駄に。
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!