Sequel class table 继承

Sequel class table inheritance

我希望在 Rails 中使用 Multiple/Class table 继承开始一个项目。为此,我计划使用 Sequel 而不是 ActiveRecord。可以在此处找到文档 - Sequel - class table inheritance

我有插件在一定程度上工作,我可以调用 child.first 它会给我第一个 child classes,这不是第一个parent class,它包括来自 child table 的数据。问题是相反的...

因此,如果我通过 parent class 加载数据库行,这恰好是 child2 class

p = Parent.first <Parent @values = {kind = "Child2"}>

然后尝试使用它应该给我的文档中列出的刷新命令来获取 child 数据

p.refresh <Parent @values = {kind = "Child2", child2data = "data from child 2 table"}>

但它没有,它只是 returns 未改变的 parent

我已经在我的 parent class

中添加了一张模型图
 plugin :class_table_inheritance,:key=>"kind", :model_map=>{"Child1"=>:Child1,"Child2"=>:Child2}

我尝试过使用不同的值和其他废话来尝试让它工作,但没有成功。

我理想中想要的是能够找到 parent 并调用一个方法来实例化 child class 所以

p = Parent.first
c = p.child
c <Child2 @values = {kind: "Child2", Child2data: "data from child2 table">

我觉得我可能可以 hack/add 我的 parent class 一个方法来做到这一点,但在这一点上感觉很简单,我不应该这样做,还有刷新方法不起作用的事实让我很担心,我想解决这个问题

有人有答案吗?有空阅读

p.s。我正在使用 rails 5,rails-sequel gem,并且我在一个或多或少是空白的项目中工作,我只想有一个像样的 CTI 设置,因为对我来说它似乎是比多态关联更优雅。

在插件调用中使用 :key=>:kind,这应该可以解决您的问题。如果您想要 p.child 方法,请使用关联而不是 class_table_inheritance 插件。