【问题标题】:Mongoid 6 alias field nameMongoid 6 别名字段名
【发布时间】:2017-08-08 13:52:57
【问题描述】:

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

这是我在查看 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

提前致谢!

【问题讨论】:

    标签: mongoid6


    【解决方案1】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多