Mongoid 6 псевдоним поля имя
Я обновляю приложение Rails 4.2 с mongoid 5.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
Заранее спасибо!
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