我想知道,什么是rails将一个子类记录转换为另一个子类记录的方法,仅仅改变类型是不起作用的,而且超类对子类也是如此,反之亦然。
提前感谢
Markiv
发布于 2010-06-12 03:58:35
您所要做的就是更改类型字段。确保保存记录,并从数据库重新加载Ruby对象。
如果这不起作用,你能提供一些Ruby代码来隔离这个问题吗?
发布于 2010-06-12 04:15:51
您是否在询问如何将一个子类的对象更改为它的超类的不同子类?这在面向对象的方案中是不可能的。可以将对象从超类强制转换为子类,但不能将其强制转换回来,因为该对象现在可能包含超类不包含的变量和方法。
发布于 2013-01-17 00:25:35
Rails中的多态性可以做到这一点:
subclass1record.becomes(Subclass2)注意:新实例将共享与原始类相同属性的链接。因此,对任何一个实例中的属性进行的任何更改都会影响另一个实例。
为了避免这种情况,您可以先复制记录:
subclass1record_new = subclass1record.dup然后使用新记录:
subclass1record_new.becomes(Subclass2)http://apidock.com/rails/ActiveRecord/Persistence/becomes
https://stackoverflow.com/questions/3025708
复制相似问题