before_filter для установки общей переменной экземпляра (Ruby On Rails) - PullRequest
2 голосов
/ 28 февраля 2011

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

before_filter :get_clients, :only => [:new, :edit, :create, :update]
...
def get_clients
      @clients = Client.accessible_by(current_ability)
end

Моей форме нужен доступ к @clients, поэтому я настраиваю переменную @clients с фильтром before, а не делаю это в каждом методе. Имеет ли это смысл?

1 Ответ

5 голосов
/ 28 февраля 2011

Я бы рекомендовал вместо этого создать мемоизированного помощника:

def current_clients
  @current_clients ||= Client.accessible_by(current_ability)
end
helper :current_clients

Это будет работать так же хорошо, как и фильтр до, но не будет работать, если вам не нужно фактически загрузить список клиентовформа / вид.Вы получаете ленивую загрузку этого ресурса.Ответственность за знание того, как загрузить список клиентов, по-прежнему остается за контроллером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...