重新初始化ruby类

dub*_*ace 2 ruby metaprogramming

我怎么解决它?

class Person
end

class Person < ActiveRecord::Base
end

TypeError: superclass mismatch for class Person.
Run Code Online (Sandbox Code Playgroud)


我想重新初始化一堂课.

Cez*_*zar 6

一旦你在ruby中创建了一个类,就不能通过重新打开它来改变它的超类.这就是你收到TypeError: superclass mismatch for class Person.错误的原因.

其他答案提供了替代方案,但重要的是要注意,它们都没有修改现有的Person类,但实际上创建了一个新类,并将旧的Person常量重新分配给新类,这在@ user1158559在其答案中已经说明的限制下.