Polymorphic class 移至 Legacy Module 并正在寻找多态类型 Legacy::Class 而不是 Class

Polymorphic class moved to Legacy Module and is looking for polymorphic type Legacy::Class instead of Class

我将遗留代码移动到使用单独的只读数据库(旧 MySQL 数据库)的遗留模块中,因为我们已将新版本迁移到 PostgreSQL。

在我们到达多态关联之前,一切都很好。它想要寻找 eventable_type: 'Legacy::Schedule' 而不仅仅是 'Schedule'.

我可以对该字段进行更新以更改为 'Legacy::Schedule',但我认为这不是最干净的解决方案。我只想修改 API 中的 ActiveRecord 查询,或者如果有关系黑客,我也希望这样做。

这是我的示例:

class Legacy::LegacyData < ActiveRecord::Base
  self.abstract_class = true

  case Rails.env
  when "production"
    establish_connection :legacy_production
  when "development"
    establish_connection :legacy_development
  when "test"
    establish_connection :legacy_test
  else
    puts "connection: Rails.env error on establish_connection"
  end
end

,

module Legacy
  class Event < Legacy::LegacyData
    belongs_to :eventable, polymorphic: true
    ...
  end
end

,

module Legacy
  class Schedule < Legacy::LegacyData
    has_many :events, as: :eventable

    ...
  end
end

里面Legacy::Event

def eventable
  if self.eventable_type == 'Schedule'
    Legacy::Schedule.find(self.eventable_id)
  else
    Legacy::OtherClass.find(self.eventable_id)
  end
end

更新:

这是不完整的。不考虑 Legacy::Schedule 查询或建立其事件关联时仍然查询 Legacy::Schedule

的实例