【问题标题】:Rails STI has_many STI children of one typeRails STI has_many STI children of one type
【发布时间】:2021-08-31 09:22:23
【问题描述】:

我有这样的结构:

A 拥有一个 B (STI),而 B (STI) 拥有多个 C(STI)

我如何告诉 B1(B 的子类)它拥有多个 C1(C 的子类) 如果有可能的话。 (B1只能包含C1,不能包含其他C子类)

谢谢!

【问题讨论】:

  • 你能给我们一些实际的代码,这样愿意花时间在你的问题上的人就不必从头开始编写所有东西,这样我们就不必对实现做出一堆假设吗?
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: ruby-on-rails activerecord single-table-inheritance sti


【解决方案1】:

我最终找到了解决方案:

我需要像这样在 has_many 中指定 class_name

has_many :C, :foreign_key => :parent_id,  class_name: 'C::C1'

【讨论】:

  • 在子类中重新定义关联的一个问题是,如果您在父类中定义了任何通过它的关联,您将获得ActiveRecord::HasManyThroughOrderError
  • @max 如果父级与 STI 父级有关联,这只是一个问题,对吧?就像 B 有 has_many :C, :foreign_key => :parent_id
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
相关资源
最近更新 更多