我正在使用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
。
答案 0 :(得分:2)
Benjamin,如果现有的课程不存在或没有加载,重新开课不会通知你(但是class_eval
会引发错误)。
但是如果你有测试覆盖率,我认为重新上课应该是安全的吗?
答案 1 :(得分:2)
你不能在没有class_eval的情况下改变这个类。 只是尝试覆盖一个方法,所有其他方法都消失了。使用class_eval可以避免它。这就是红宝石的方式。