Доступ к помощникам Rails из презентатора / модуля? - PullRequest
2 голосов
/ 09 августа 2011

Есть много вопросов о доступе к помощникам Rails из модели, и все они справедливо утверждают, что ответ не в том, чтобы сделать это.Это не тот вопрос.

У меня есть довольно сложный контроллер и вид кода, который я хочу абстрагировать в класс докладчика.Но этот класс не является потомком ApplicationController.Как я могу получить доступ, скажем, к devise current_user?

1 Ответ

3 голосов
/ 11 августа 2011

Похоже, в настоящее время нет "официального правильного" способа сделать это.Две возможности:

  1. Это хакерство, но вы можете сохранить текущий контроллер в ApplicationController и ссылаться на него в своих докладчиках, чтобы получить помощь:

    class ApplicationController < ActionController::Base
      prepend_before_filter { @@current_controller = self }
    end
    
    class YourPresenter
      def current_user
        ApplicationController.current_controller.current_user
      end
    end
    
    1. Джефф Казимир работает над великолепным камнем Decorator / Presenter под названием draper , в котором заключена вся идея:

https://github.com/jcasimir/draper

...