Это продолжение моего предыдущего поста:Импульсные квартира арендаторов Активный администратора
Active Admin and the Apartment Gem
Я думал, что это работает, но я застрял. У меня есть модель Company
в общедоступной схеме в качестве модели арендатора и Locations
у индивидуальных арендаторов. Вот мой вход администратор location.rb
файл:
ActiveAdmin.register Location do
#Apartment::Tenant.switch!('abc')
controller do
#Apartment::Tenant.switch!('abc')
before_filter do
Apartment::Tenant.switch!('abc')
skip_authorization
skip_policy_scope
end
end
end
skip_authorization skip_policy_scope является от некоторых вопросов Пандита я до сих пор с АА. Как вы можете видеть, я попытался добавить Apartment::Tenant.switch
в несколько мест. Внутри блока контроллера это единственное место, где я могу заставить его работать.
Когда я загружаю индексную страницу Locations
, она отлично работает, и я вижу места своего арендатора. Проблема в том, что если я вернусь на Личную панель или другую страницу и вернусь в Locations и позвоню Apartment::Tenant.switch
, меня отпишут обратно на экран входа в систему AA, и я не могу войти в систему. Мне нужно вручную ввести путь выхода из системы AA для выхода из системы.
Это очень странно и не уверен, как еще можно справиться с этим. Журналы не показывают многого.
Я собирался объявить какую-то логику здесь с выпадающим меню, чтобы установить переменную сеанса и т. Д., А затем, если потребуется, страницы ресурсов вызывают Apartment::Tenant.switch
, но это показ-шоу. Не знаю, если это Devise, Pundit, Apartment, Active Admin или комбинация.
UPDATE
Определенный прогресс - пытался добавить выход переключателя! вызовите отладочную запись журнала и это «решило» проблему. Если установить переключатель вызов переменного также уходит:
logger.debug "Apartment Switch: #{Apartment::Tenant.switch!('abc').inspect}"
new_tenant = Apartment::Tenant.switch!('abc')
UPDATE 2
Моего предыдущее обновление было ошибочным - вопрос остается. Я сузил его до Девиза. Второй вызов switch!
никогда не вызывается, поскольку Devise выдает ошибку 401 и выкидывает вас первым. Я отключил Devise для Active Admin, и моя система переключения работает нормально. Я могу использовать простой раскрывающийся список компаний и сеансы для переключения арендаторов на лету. Разработать как-то совсем не нравится.
Вот сутью моих файлов AA: https://gist.github.com/jasper502/8fd16c31ee26667c5a16
Это не Пандит - я отключил его, и я до сих пор вопрос. –