Rails-миграция: проверьте наличие переменных - PullRequest
0 голосов
/ 12 февраля 2019

Я делаю новый файл миграции rails для перемещения содержимого атрибута из модели в другую модель:

class StepIdCorrectionForReportSheetTemplate < ActiveRecord::Migration[5.1]
  def change
      Report.current.find_each do |report|
        first_sheet = report.sheets.select{ |sheet| !sheet.is_archived }.sort_by{ |sheet| sheet[:order] }.first
        if not report.step_id.nil?
          first_sheet.update( step_id: report.step_id )
          first_sheet.template.update( step_id: report.step_id )
        end
    end

  end
end

Я получил эту ошибку:

неопределенный метод `update 'для nil: NilClass /home/sahnoun/altagem/web/db/migrate/20190208104955_step_id_correction_for_report_sheet_template.rb:7:in 'block in change'

Я думаю, что мне нужно добавить еще один тест для проверки существованияreport_sheet и report_sheet.template

1 Ответ

0 голосов
/ 12 февраля 2019

Да, вы можете проверить, присутствует ли first_sheet.template:

 first_sheet.template.update( step_id: report.step_id ) if first_sheet.template
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...