Mongoid:向模型添加哈希但无法写入

时间:2012-01-14 23:33:31

标签: ruby-on-rails ruby mongoid

我有一个模型,实体。

class Entity
  include Mongoid::Document

  field :x
  field :y
  field :z, type => Hash, :default => {} # new field

end

我添加了一个新字段,一个哈希。当我尝试使用它时,我收到错误。我的代码是:

e = Entity.first
if e.z["a"] # if there is a key of this in it?
  e.z["a"] = e.z["a"] + 1
else
  e.z["a"] = 1
end

但是,使用未定义方法的此错误会获取哈希值。如果我尝试为它创建初始化程序,要在现有文档中设置值,它会出错并返回相同的错误。我究竟做错了什么?

初始化程序看起来像:

e = Entity.first
e.write_attribute(:z, {})

由于

1 个答案:

答案 0 :(得分:1)

对它进行排序。

似乎答案是将Mongoid 1.9.5中的哈希值设置为:

field :hash_field, :type => Hash, :default => Hash.new

它可以访问并初始化它。不太明白为什么,但很高兴得到答案!