Rails 5升级枚举值已更改

我是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

还有一个推荐状态机,该推荐状态机将工作流状态ID与枚举值匹配

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">

由于此更改,belongs_to中断,因为workflow_state_id与WorkflowState表中的ID不匹配。

我无法通过升级来了解这种变化。有人可以帮忙吗?

nikoliu1 回答:Rails 5升级枚举值已更改

Rails 5.0.0中的ActiveRecord::Enum有所更改。这就是以字符串格式而不是整数值显示枚举值的原因。以下是解释此link

的提交链接
本文链接:https://www.f2er.com/2402217.html

大家都在问