Ruby/Rails:重新打开与覆盖类

Mik*_*yth 12 ruby namespaces ruby-on-rails class

我想在Rails模型中添加一个方法,用于测试.如果我这样做

class Model
  def something_new
    do_something
  end
end
Run Code Online (Sandbox Code Playgroud)

在Rails控制台或运行时加载的文件中,模型被覆盖而不是修改.如果我v = Model.class在上面的行之前添加了一些内容,则新方法将成功添加到现有类中.显然需要参考来表示正在重新打开现有的类.

另一方面,可以添加一个方法,比如Fixnum,而不必先引用它.这里发生了什么,以及确保重新打开和修改现有类而不是被覆盖的常用方法是什么?

谢谢.

Chu*_*uck 12

听起来你在使用之前不需要课程.当你编写Model.class并且没有Model类时,Rails会自动为你带来Model.如果你只是写class Model,它只是将其视为一个类定义.只是做的require 'model'应该工作.


Mir*_*rko 6

使用class_eval,这样您就能以正确的方式重新开放课程。这是一篇关于重新开课
的非常好的文章。