ruby-on-rails - Mongoid:向模型添加哈希但无法写入

标签 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, {})

谢谢

最佳答案

已排序。

似乎答案是在 Mongoid 1.9.5 中将散列设置为:

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

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

关于ruby-on-rails - Mongoid:向模型添加哈希但无法写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866302/

相关文章:

ruby - Rails 覆盖 flash

ruby-on-rails - 将数字添加到正则表达式?

ruby-on-rails - Rails ActiveRecord 字符串字段编码与 Ruby 字符串编码

ruby-on-rails - 如何使用 Rails 对网页输出进行 gzip 压缩?

html - 使用 XPath : find last text node of each paragraph under the root node

javascript - Ruby 中的 JS 风格对象引用

ruby-on-rails - Rails类继承,Mongoid返回数据失败

ruby-on-rails - Tire Elastic中的自定义分析器无法与Mongoid一起使用

javascript - bootstrap 后缀不能与 firefox 一起正常工作

html - 如何以用户输入的格式而不是以数据库存储的格式获取数据