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
Другие вопросы по тегам