Как я могу проверить наличие метода в контроллере приложения rails? - PullRequest
0 голосов
/ 06 мая 2009

В моем контроллере приложения у меня есть метод, который должен проверять существование другого метода в подклассовом контроллере для установки имени файла загружаемого файла, но у меня возникают проблемы с его корректной работой

я пробовал

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

1 Ответ

2 голосов
/ 06 мая 2009

Полагаю, это связано с тем, что суперкласс контроллера не знает о существовании методов подкласса. В этом можно убедиться, проверив массив methods подкласса.

Кажется, что решение состоит в том, чтобы пересмотреть ваш дизайн. Вместо проверки существования filename_method, просто укажите поведение имени файла по умолчанию в базовом методе filename и переопределите метод filename в подклассе, чтобы обеспечить пользовательские функции имени файла.

Например, в вашем суперклассе:

def filename
  # return default file name 
end

А в вашем подклассе:

def filename
  # return custom file name 
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...