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
的实例
我将遗留代码移动到使用单独的只读数据库(旧 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
的实例