我正在使用mongoid 5.2升级Rails 4.2应用,但升级后我发现不允许options
,client
字段名称。
这是我在查看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
提前致谢!
答案 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