Имя поля псевдонима Mongoid 6

Я обновляю приложение Rails 4.2 с помощью mongoid 5.2, но после обновления я обнаружил, что имена полей options, client не разрешены.

Это вывод, к которому я пришел, посмотрев на код 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

Заранее спасибо!


person Ricard Forniol Agustí    schedule 08.08.2017    source источник


Ответы (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
person Ricard Forniol Agustí    schedule 09.08.2017