В своем проекте я использую драгоценные камни devise, cancancan и rails_admin. Я добавил:
before_action: authenticate_user!
в application_controller, как рекомендовано devise.
Работает до тех пор, пока речь идет об административной части сайта. Корневая страница сайта не должна нуждаться в аутентификации, но на самом деле для входа требуется логин. Я предполагаю, что это из-за того, что обратный вызов помещен в application_controller.rb.
Я хотел бы знать, как ограничить и требовать входа в систему только на некоторых страницах сайта, но не на тех страницах, к которым пользователи должны получать доступ без необходимости входа в систему, например, на корневой странице.





ApplicationController является предком всех контроллеров. Если вы поместите обратный вызов в этот контроллер, он будет вызываться из любого контроллера в вашем приложении. Чтобы выполнить обратный вызов только с определенных контроллеров, переместите обратный вызов:
before_action: authenticate_user!
из ApplicationController и поместите его в тело класса контроллеров, которые должны требовать аутентификации.
Вау, я не думал об этом раньше. Я протестирую. Спасибо за помощь и извините за мой плохой английский! (Гугл переводчик)