SessionsHelper на railstutorial.org: Должны ли помощники быть модулями общего назначения для кода, который не нужен в представлениях?

На сайте railstutorial.org есть предложение, которое кажется мне немного странным.

Предлагается следующий код :

class ApplicationController < ActionController::Base 
  protect_from_forgery 
  include SessionsHelper 
end 

include SessionsHelper делает методы доступными из ApplicationController , да, но также делает их доступными в любом представлении. Я понимаю, что аутентификация / авторизация является сквозной, но действительно ли это лучшее место?

Это кажется мне потенциально слишком широким. Добавление кода, реализующего, скажем, before_filter , который выполняет условную переадресацию (как в примере с railstutorial.org), в модуль, который чаще всего содержит помощников представления, кажется удивительным.

Не лучше ли разместить функциональные возможности, не являющиеся строго необходимыми в представлениях, в ApplicationController или где-нибудь еще?

Или я просто слишком много об этом думаю?

19
задан Craig Stuntz 31 March 2011 в 13:07
поделиться