我正在使用 Ruby on Rails 3.2.9 和 Ruby 1.9.3-p125。场景如下:
我实现了一个acts_as_customizable
插件,并且我有一个Article
“可定制”的模型类。该插件通过元编程向模型类添加了一个名为的方法(注意:从那以后,插件具有副作用,因为在对象范围之外操作对象)。customize
Comment
Comment
Article
鉴于这种情况,当我(重新)启动服务器并运行时@comment.customize
,我会收到错误消息NoMethodError - undefined method 'customize' for #<Comment:0x0...>
。但是,当我(重新)启动服务器并运行以下代码时,一切都按预期工作:
Article
@comment.customize
如果我理解“邪恶”部分,上面的代码可以工作,因为在运行该方法之前Article
对类的“简单”调用使其触发该方法,该方法又将(通过元编程)该方法添加到类中。customize
acts_as_customizable
customize
Comment
我应该如何避免“邪恶”?