我是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不匹配。
我无法通过升级来了解这种变化。有人可以帮忙吗?