0

我希望在 Rails 中使用 Multiple/Class 表继承来启动一个项目。为此,我计划使用 Sequel 而不是 ActiveRecord。文档可以在这里找到 - Sequel - 类表继承

我的插件在一定程度上可以工作,我可以调用 child.first ,它会给我第一个子类,这不是父类的第一个,它包括子表中的数据。问题正在转向另一个方向......

所以如果我通过父类加载一个数据库行,它恰好是一个 child2 类

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

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

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

但它没有,它只是返回未改变的父级

我在我的父类中包含了一个模型图

 plugin :class_table_inheritance,:key=>"kind", :model_map=>{"Child1"=>:Child1,"Child2"=>:Child2}

我玩过不同的价值观和其他废话,试图让它发挥作用,但没有成功。

我理想中想要的是能够找到父类并调用一个方法来实例化子类,所以

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

我觉得我可能可以在我的父类中破解/添加一个方法来做到这一点,但在这一点上我感觉很简单,我不应该这样做,而且刷新方法不起作用的事实让我和我一样担心解决

有人有答案吗?ty阅读

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

4

1 回答 1

0

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

于 2016-11-09T15:21:43.983 回答