【发布时间】:2014-05-23 10:28:22
【问题描述】:
我正在尝试覆盖第三方提供的模块中的类方法。
我的目标是检查第二个参数,如果是哈希则实例化一个新的自定义对象,否则调用原始实现:
module ThirdParty
def self.login(email, password_or_options)
if password_or_options.is_a?(Hash)
SafeSession.new(email, password_or_options['sid'], password_or_options['master_key'], password_or_options['shared_keys'], password_or_options['rsa_privk']).storage
else
super(email, password_or_options)
end
end
原始方法签名:
module ThirdParty
def self.login(email, password)
# Library doing its own stuff
end
end
目前这失败了
ThirdParty.login('email', { test: true })
NoMethodError: super: no superclass method `login' for ThirdParty:Module
我也在使用 ActiveSupport,以防在这个框架中有解决这个问题的方法。
【问题讨论】:
标签: ruby-on-rails ruby