Mongoid 6别名字段名称

时间:2017-08-08 13:52:57

标签: mongoid6

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

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

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

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

这是我的模型定义:

class ScheduledReport
  include Mongoid::Document

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

提前致谢!

1 个答案:

答案 0 :(得分: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