0

我正在使用 mongoid 5.2 升级 Rails 4.2 应用程序,但升级后我发现options不允许client使用字段名称。

这是我在查看 mongoid 代码并看到此异常后得出的结论:

NameError - 未定义的方法options' for classScheduledReport': mongoid (6.1.1) lib/mongoid/errors/invalid_field.rb:44:in `origin'

有没有办法定义一个字段 :foo 映射到 :options 或数据库中的任何字段?

这是我的模型定义:

class ScheduledReport
  include Mongoid::Document

  field :options, type: Hash, default: {}
end

提前致谢!

4

1 回答 1

0

我没有找到任何映射字段名称的解决方案,因此我决定使用迁移重命名该字段,因为受影响的集合很小:

collection = Mongoid.default_client[:scheduled_reports]
collection.find.each do |report|
  puts "#{report['options']} => #{report['configuration']}"
  if report['options']
    collection.update_one( { '_id' => report['_id'] }, { '$set' => { 'configuration' => report['options'] } } )
    object = collection.find('_id' => report['_id']).first
    puts "#{object['options']} => #{object['configuration']}"
  end
end
于 2017-08-09T08:29:34.753 回答