Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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
Ruby on rails 删除多态ActiveRecord模型后如何处理“未初始化常量”_Ruby On Rails_Ruby_Activerecord_Polymorphism_Polymorphic Associations - Fatal编程技术网

Ruby on rails 删除多态ActiveRecord模型后如何处理“未初始化常量”

Ruby on rails 删除多态ActiveRecord模型后如何处理“未初始化常量”,ruby-on-rails,ruby,activerecord,polymorphism,polymorphic-associations,Ruby On Rails,Ruby,Activerecord,Polymorphism,Polymorphic Associations,我们有这样一个模型: class Notification < ApplicationRecord belongs_to :notifiable, polymorphic: true end 数据需要持久化。似乎是使用ActiveRecord多态性解决了问题。删除具有多态类型名称的模型时,处理/防止此问题的最佳方法是什么?使用通知。其中(notifiable\u type:PatientVital),删除该类时,您的代码将引发错误,因此,您可以更早地作出反应,您需要对该类中的记录采

我们有这样一个模型:

class Notification < ApplicationRecord
  belongs_to :notifiable, polymorphic: true 
end

数据需要持久化。似乎是使用ActiveRecord多态性解决了问题。删除具有多态类型名称的模型时,处理/防止此问题的最佳方法是什么?

使用
通知。其中(notifiable\u type:PatientVital)
,删除该类时,您的代码将引发错误,因此,您可以更早地作出反应,您需要对该类中的记录采取一些措施。

您仍然需要这些记录,但它们不应该绑定到模型?这似乎是一种反模式。你能进一步解释一下吗?我们应该在删除表之前移动数据。我想我们需要从备份中取出它。我想知道是否有一个很好的方法来避免将来犯这个错误。可能会对删除表的任何迁移进行一些自定义代码检查,例如检查是否可能
notifiable\u type
。您仍然可以移动数据。这可以很容易地通过迁移完成,因为它将数据保留在多态表中,而多态表是issue@engineersmnky是的,我们将移动数据。我只是想知道未来预防此类问题的最佳方法。更好的测试覆盖率或预提交挂钩,但它似乎很复杂。您对抛出错误的记录具体做了什么,因为仅使用
where(notifiable\u type:'PatientVital')
查询这些记录不应该抛出任何错误?
Notification.where(notifiable_type: 'PatientVital')