У меня вопрос простой: Куда поместить вспомогательные методы, которые много раз называют контроллером?
Мое желание сохранить мой контроллер (user_controller), и у меня есть вспомогательные методы, которые вызываются много раз (check_permits) Можно ли поместить этот метод в user_helper?
Если да ==> как напомнить об этом внутри user_controller? Если я просто вспомню check_permits, он этого не узнает.
Если нет ==>, где поставить вспомогательные методы?Контроллер вызывает помощника
ответ
Вы можете поместить глобальные вспомогательные методы в файл application_helper.rb, но если он будет использоваться только одним контроллером, каждый контроллер может иметь собственный хелпер-файл. Посмотрите приложение/помощник (или приложение/контроллер/помощник).
Вы используете путаную терминологию. В рельсах контроллеры не имеют помощников. Помощники определяются как относящиеся к представлениям. Вы можете вызвать вспомогательные методы с контроллера с помощью метода «помощников» (см. http://api.rubyonrails.org/classes/ActionController/Helpers/ClassMethods.html), но я не думаю, что это то, что вы ищете (и вообще это не очень хорошая идея).
То, что вы, вероятно, хотите, чтобы либо (1) поставить метод непосредственно в users_controller.rb как защищенный метод:
class UsersController < ApplicationController
...
protected
def check_permits
...
end
end
Или (2) положить его в application_controller.rb, если вы это называете от нескольких контроллеров.
Или (3) поместить его в файл библиотеки как модуль и включить его в какие-либо контроллеры. Например, вы можете создать Библиотека/check_permits.rb:
module CheckPermits
protected
def check_permits
...
end
end
А потом в users_controller.rb:
class UsersController < ApplicationController
include CheckPermits
...
end