Rails:关联的STI类中的循环依赖

索洛波夫

我有两节课:CategoryMeter像a一样Category,aMeter有一个名称,用于对各种Bills进行分类它们之间的区别在于,一个Meter具有多个连接,并且可以具有另一个连接CategoryMeter作为其父连接。

我已经使用单表继承实现了这个域,但是当我尝试运行控制台,测试或服务器时,我得到了'load_missing_constant': Circular dependency detected while autoloading constant Meter错误(完整的跟踪在这里。

以下是有问题的课程:

meter.rb:

class Meter < Category
  belongs_to :parent, class_name: Category
  has_many :meter_values, dependent: :destroy
  has_many :tariffs, dependent: :destroy
  validates :init_meter, presence: true
  validates :init_meter, numericality: { greater_than_or_equal_to: 0.0 }


  def current_tariff
    tariffs.first
  end
end

category.rb:

class Category < ActiveRecord::Base
  has_many :bills, dependent: :destroy
  has_many :children, class_name: Meter, inverse_of: :parent, foreign_key: :parent_id

  validates_associated :bills
  validates :name, presence: true
end
浅裂

CategoryMeter两者都在其类定义中互相引用,因此在没有首先加载对方的情况下都无法加载。如果class_name用引号引起来,那应该很好:

has_many :children, class_name: 'Meter', ...

但是,对于您的域模型,我的幻想还是有些刺耳。您可能需要重新访问数据库设计,看看是否还有另一个表应该保留其中的某些或全部内容,Meter而不是使用STI。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章