我使用Ruby 1.9.2和Ruby on Rails 3.2.2。我有以下情况:如何正确覆盖模块混合的方法?
class MyClass < ActiveRecord::Base
include MyModule1
include MyModule2
include ...
# Note: This method statement should override the method mixedin by MyModule1.
def my_method(*args)
# ...
end
end
module MyModule1
def my_method(*args)
raise "NotImplementedError - The :my_method is not implemented yet"
end
end
# /app/views/layouts/application.html.erb
if @my_class.my_method
All right!
end
当我开始我的Web应用程序的浏览页面,然后我得到的错误"NotImplementedError - The :my_method is not implemented yet"
,即使我在MyClass
推翻了my_method
即包括MyModule
(你可以在上面的代码读取)。它是否发生是因为它在类之前加载了视图?或者是什么?我应该如何处理这种情况才能使MyClass
正确覆盖my_method
?
“@ my_class”持有一个类型为“Class”的常量,还是它是类的一个实例? – iain
@Iain - '@ my_class'是'MyClass'的一个实例。 – user12882
好的,只是检查:) – iain