从方法内改变自习班?

时间:2016-06-16 08:30:50

标签: ruby-on-rails ruby

让我们从假设我想要一个允许的方法开始 将自身转换为另一个对象的对象。其中B是A对象

(在B模型中) - >

def change_type
  self = self.becomes (A)
end
但无论如何我无法改变“自我”。我该如何解决?演员必须在模特中。

3 个答案:

答案 0 :(得分:1)

没有办法。您无法覆盖self。或者任何对象 * ,事实上。

*您可以重新分配参考/变量,但不能重新分配对象本身。

答案 1 :(得分:1)

您不能在创建对象后更改对象的类,也不能将对象更改为其他对象。

您正在考虑Smalltalk's become: method,它可以使一个对象成为另一个对象(因此作为特殊情况也会更改对象的类)。 Ruby没有这个。

答案 2 :(得分:0)

如果类B继承了类A,那么B的实例就会生成A的实例。无需改变。

class A; end

class B < A; end

b = B.new

b.is_a?(A)  #=> true