首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >STI和子类

STI和子类
EN

Stack Overflow用户
提问于 2010-06-12 03:39:43
回答 3查看 762关注 0票数 2

我想知道,什么是rails将一个子类记录转换为另一个子类记录的方法,仅仅改变类型是不起作用的,而且超类对子类也是如此,反之亦然。

提前感谢

Markiv

EN

回答 3

Stack Overflow用户

发布于 2010-06-12 03:58:35

您所要做的就是更改类型字段。确保保存记录,并从数据库重新加载Ruby对象。

如果这不起作用,你能提供一些Ruby代码来隔离这个问题吗?

票数 2
EN

Stack Overflow用户

发布于 2010-06-12 04:15:51

您是否在询问如何将一个子类的对象更改为它的超类的不同子类?这在面向对象的方案中是不可能的。可以将对象从超类强制转换为子类,但不能将其强制转换回来,因为该对象现在可能包含超类不包含的变量和方法。

票数 0
EN

Stack Overflow用户

发布于 2013-01-17 00:25:35

Rails中的多态性可以做到这一点:

代码语言:javascript
复制
subclass1record.becomes(Subclass2)

注意:新实例将共享与原始类相同属性的链接。因此,对任何一个实例中的属性进行的任何更改都会影响另一个实例。

为了避免这种情况,您可以先复制记录:

代码语言:javascript
复制
subclass1record_new = subclass1record.dup

然后使用新记录:

代码语言:javascript
复制
subclass1record_new.becomes(Subclass2)

http://apidock.com/rails/ActiveRecord/Persistence/becomes

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3025708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档