ruby-on-rails - Rails 单表继承,在不同模型中引用不同列
问题描述
如何在使用单表继承从公共类继承的 2 个模型中拥有 2 个不同的引用列?
我找到了这个单表继承 (STI) 列关联的答案,但是就像 10 年前一样,现在在 Rails 中有更好的解决方案吗?
问题示例:我想要考虑类(动物具有识别狮子/人类的类型)
class Animal < ApplicationRecord
belongs_to :classA
end
class Lion < Animal
belongs_to :two_legged
end
class Human < Animal
belongs_to :four_legged
end
所以最后我希望 Lion 属于classA
and two_legged
; 人类属于classA
和four_legged
除了在 Animal 中定义所有三个 belongs_to 并在 Lion & Human 中将不相关的列设为 nil 之外,还有其他更好的解决方案吗?
解决方案
按照官方文档:
class Animal < ApplicationRecord
belongs_to :classA
has_many :lions
has_many :humans
end
class Lion < ApplicationRecord
belongs_to :animal
end
class Human < ApplicationRecord
belongs_to :animal
end
推荐阅读
- mit-scratch - 使一个精灵跟随另一个偏离中心,包括旋转
- android - 如何验证信用卡/支票卡号?
- cadence-workflow - 无法运行不受支持的工作流:错误 1193:未知系统变量“transaction_isolation”
- flutter - dart:io 或 dart:html 的条件导入
- css - CSS 过渡第一次不起作用
- c# - Moq.Times 参数默认值?如何创建结构常量,bc Moq.Times.Once() 不是编译时常量
- swiftui - 从 UIViewControllerRepresentable 中按下的按钮导航到 SwiftUI 视图
- excel - 由于从文件中提取数据,VBA 速度很慢
- unity3d - 如何让 GetTouch() 输入与 OnMouseDown() 输入相同
- javascript - 我如何做 npm 模块支持导入和要求?