运行测试套件时未初始化的常量命中嵌套模型

时间:2021-04-06 01:02:34

标签: ruby-on-rails

下面的类

class Producttag < ApplicationRecord
  belongs_to :product, optional: true
  belongs_to :variant, optional: true

是其父级的子级

class Product < ApplicationRecord
  has_many   :productags, dependent: :destroy

他本身就在另外两个父母的链中。每个类对其子类调用 dependent: :destroy

对销毁操作运行测试时,每个类都会遇到相同的错误:

NameError: uninitialized constant Product::Productag

或在变体类上

NameError: uninitialized constant Variant::Productag

所有其他 parnet 子关系依赖项都被破坏,但不是后一个。唯一明显的区别是关系上的 optional: true。这是关于销毁操作中的错误的假设,但很难理解。

如果这是动机,为什么?或者缺少什么以允许破坏“可选”孩子 记录?

1 个答案:

答案 0 :(得分:1)

班级是 Producttag 但你的关系是 has_many :productags, dependent: :destroy

您在 producttag 中缺少“t”,这导致 rails 寻找“class_name”Productag

话虽如此,ProductTagproduct_tag 会让这一点更加明显