Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Module 多态类已移动到遗留模块,正在查找多态类型Legacy::class而不是class_Module_Polymorphism_Legacy - Fatal编程技术网

Module 多态类已移动到遗留模块,正在查找多态类型Legacy::class而不是class

Module 多态类已移动到遗留模块,正在查找多态类型Legacy::class而不是class,module,polymorphism,legacy,Module,Polymorphism,Legacy,我将遗留代码移动到一个遗留模块中,该模块使用一个单独的只读数据库(旧的MySQL数据库),因为我们已经移动到新版本的PostgreSQL 在我们找到多态关联之前,一切都很好。它希望查找可事件类型:“Legacy::Schedule”,而不仅仅是“Schedule” 我可以对字段进行更新以更改为“Legacy::Schedule”,但我认为这不是最干净的解决方案。我只想在API中修改ActiveRecord查询,或者如果有关系黑客,我也希望这样 以下是我的例子: class Legacy::Leg

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

在我们找到多态关联之前,一切都很好。它希望查找可事件类型:“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
class Legacy::LegacyData
,

遗留模块
类事件<遗留::LegacyData
属于:可事件,多态:真
...
结束
结束
,

遗留模块
类计划
内部遗留::事件

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

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

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