【发布时间】:2014-03-10 02:42:05
【问题描述】:
我正在使用 Spree,Spree 有一个名为 Order 的类,看起来像:
module Spree
class Order
# class definition.
end
end
在我自己的应用程序中,我一直在自定义Order,如下所示:
Spree::Order.class_eval do
# customisations
end
我的问题是,我可以简单地这样做吗:
module Spree
class Order
# My own customisations.
end
end
这样做有什么缺点吗?本质上,我想避免使用class_eval。
【问题讨论】:
-
嘿.. 你找到解决方案了吗?我现在刚刚开始使用 spree,需要向 Spree::Order 类添加一个常量。使用
class_eval不知何故不适用于常量,并且没有class_eval,我无法弄清楚如何访问我正在重新打开的类中的其他方法。 -
尝试使用
@@some_constant。不是 Spree 问题,而是普遍的 Ruby 怪异问题。 -
是的..这就是我所做的,它奏效了。不过需要注意的是,我必须
require在打开它之前打开我正在打开的模块/类。这样可以确保在我再次打开之前加载原始类文件以更改它以避免出现类未找到错误。