在我的应用程序控制器中,我有一个方法应该检查子类控制器中是否存在另一个方法来设置下载文件的文件名,但是我无法使其正常工作
我试过
def filename
begin
send "filename_method"
rescue NoMethodError
default_filename
end
end
和
def filename
if respond_to?("filename_method")
send "filename_method"
else
default_filename
end
end
但是两者总是返回default_filename,即使在子类控制器中定义了filename_method也是如此。有人能指出我在正确的方向吗?
谢谢,
-C
答案 0 :(得分:2)
我猜这是因为控制器超类不知道子类的方法是否存在。您可以通过检查子类的methods
数组来确认这一点。
似乎解决方案是重新考虑您的设计。不要检查filename_method
是否存在,只需在基本filename
方法中提供默认文件名行为,并覆盖子类中的filename
方法以提供自定义文件名功能。
例如,在您的超类中:
def filename
# return default file name
end
在您的子类中:
def filename
# return custom file name
end