Изменено значение перечисления обновлений Rails 5 - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в ROR и пытаюсь обновить приложение Rails с 4.2 до 5.2 Ruby Версия: 2.3

У меня есть модель с именем 'Рекомендации'

Ассоциация внутри это так:

class Recommendation < ActiveRecord::Base

belongs_to :state, class_name: 'WorkflowState', foreign_key: :workflow_state_id

WorkflowState является моделью и содержит список возможных состояний

class WorkflowState < ApplicationRecord

WORKFLOW_STATES = ['DRAFT',
                     'PENDING_APPROVAL',
                     'APPROVED']

  def self.state_enums
    hash = {}
    WorkflowState.distinct.each do |state|
      hash[state.to_sym] = state.id
    end
    hash
  end

Существует также машина состояний рекомендаций, которая сопоставляет идентификатор состояния рабочего процесса с enum value

module RecommendationStateMachine
  # state setting
  def self.included(klass)
    klass.send(:include, AASM)

    klass.enum workflow_state_id: WorkflowState.state_enums

    # States
    klass.aasm column: :workflow_state_id, enum: true do
      state :draft, initial: true
      state :pending_approval
      state :approved

До обновления через консоль rails

r = Recommendation.first
=> #<Recommendation id: 120463,  workflow_state_id: 3>

Но после обновления через консоль rails

r = Recommendation.first
=> #<Recommendation id: 120463,  workflow_state_id: "apprvoed">

Из-за этого изменения обрывается own_to поскольку workflow_state_id не совпадает с идентификатором из таблицы WorkflowState.

Я не могу понять, как это изменение может произойти после обновления. Кто-нибудь может помочь?

...