我目前正在使用ActiveRecord单表继承。
如何将我的一个模型从A类投射到B?他们有同一个父母。
答案 0 :(得分:42)
答案 1 :(得分:5)
您不需要强制转换,因为Ruby在编译时不执行任何类型检查。你想要完成什么?
假设您有一个班级Dad
,以及子班级Son
和Daughter
。
您可以只拥有一个变量@dad,并在其中存储Son
或Daughter
对象,并将其视为Dad
。只要他们回应相同的方法,它就没有区别。这是一个名为“鸭子打字”的概念。
答案 2 :(得分:0)
如果我们有以下操作
class A < ApplicationRecord
end
Class B < A
end
我们可以使用成为
a = A.first
b = a.becomes(B)
反之亦然
答案 3 :(得分:-2)
创建B的新实例,以设置与A共享的属性的值。
类似的东西:
class C < ActiveRecord::Base
end
class A < C
end
class B < C
end
@a = A.new(...)
@b = B.new(@a.attr1, @a.attr2, ..., @a.attrN)