我正在为Rails编写一个小程序,其中包括我在ApplicationHelper
模块内的一个模块中构建的一些方法。下面是一个例子:
module Helper
def time
Time.now.year
end
end
module ApplicationHelper
# Inherit from Helper here...
end
我知道ApplicationHelper < Helper
和include Helper
可以在类的上下文中工作,但是你会用什么来实现模块到模块的继承呢?谢谢。
发布于 2015-07-23 21:45:13
一个潜在的陷阱是,如果包含的模块附加了类方法,那么这些方法可能会附加到错误的对象。
在某些情况下,将“父”模块直接包含在基类中可能更安全,然后在新方法中包含另一个模块。例如:
module ApplicationHelper
def self.included(base)
base.class_eval do
include Helper
include InstanceMethods
end
end
module InstanceMethods
def new_method
#..
end
end
end
新方法不是直接在ApplicationHelper
中定义的,因为include Helper
将在方法定义之后运行,从而导致它们被Helper
覆盖。也可以在class_eval
块中定义方法
https://stackoverflow.com/questions/10158730
复制相似问题