我想知道,什么是将子类记录转换为另一个子类记录的rails方式,只是改变类型不起作用,也是超类到子类,反之亦然。
提前致谢
Markiv
答案 0 :(得分:2)
您只需更改类型字段即可。确保保存记录,并从数据库重新加载Ruby对象。
如果这不起作用,你能提供一些隔离问题的Ruby代码吗?
答案 1 :(得分:0)
您是否在询问如何将作为子类的对象更改为其超类的不同子类?在OO方案中,这实际上是不可能的。可以将对象从超类转换为子类,但不能将其强制转换,因为该对象现在可能包含超类所不具有的变量和方法。
答案 2 :(得分:0)
Rails中的多态性可以解决这个问题:
subclass1record.becomes(Subclass2)
注意:新实例将共享指向与原始类相同属性的链接。因此,任何一个实例中对属性的任何更改都会影响另一个。
为避免这种情况,您可以先复制记录:
subclass1record_new = subclass1record.dup
然后使用新记录:
subclass1record_new.becomes(Subclass2)