Итак, вы пытаетесь использовать страницу регистрации Devise и ограничиваете доступ только для участников.
Разработка только аутентификации из коробки. Он не знает о возможностях cancancan или о любой другой логике пользователя, которую вы могли бы ввести. Таким образом, то, что вы хотите, не будет работать из коробки.
Вам необходимо выставить контроллеры и перезаписать контроллер регистрации. Вы можете использовать
rails generate devise:controllers users
если ваша Разрабатывает схема пользователя users
. Пожалуйста, обратитесь к разработке документации для фактической ссылки на команду. Затем вы можете настроить контроллер регистрации.
Что я предпочел бы делать здесь, будет использовать проверку способности и проверки подлинности в качестве действий контроллера.
class Devise::RegistrationsController < DeviseController
...
before_action :authenticate_user!
load_and_authorize_resource
Однако вы можете делать все, что хотите. Это та часть, которую вы хотите ограничить доступ. Вы можете ссылаться на объявление или любой другой компонент приложения.
Это в основном то, что вы просите. Но, я бы порекомендовал не, чтобы пройти этот путь.
У меня был аналогичный опыт с проектом, над которым я работаю. Я пытался создать страницу с добавлением пользователей на основе администратора и попытался использовать страницы регистрации разработки как базу и изменить их.
Однако то, что я испытал, настраивал эти контроллеры, а виды (особенно контроллеры) становятся громоздкими, когда вы начинаете изменять фактическую динамику страницы. Вы можете обнаружить, что вы копаете все глубже и глубже, чтобы гарантировать, что вся модель аутентификации работает без проблем.
Вместо этого я должен был ввести свой собственный контроллер. Так как devys предоставляет модели и методы аутентификации, довольно просто выполнить стандартную задачу, например, добавлять, удалять и обновлять пользователей. Ваши контроллеры будут очень тривиальны, ведь с cancancan может быть достаточно написать скелетный контроллер (без тела метода), используя load_and_authorize_resource
, который автоматически обрабатывает операции с ресурсами.
Вы можете копировать виды разработки и использовать их с этим контроллером. Таким образом, вы предоставляете подобный интерфейс с разработкой.
Важнейшая заслуга в этом подходе заключается в том, что вы не расширяете разработку и не оставляете ее работоспособной как компонент. Таким образом, все, что изменится в вашем проекте или в разработке, не сильно повлияет на вас.
декальцированные способности cancancan определяют только роли. вам необходимо проверить их, чтобы разрешить или запретить доступ. Проводили ли вы проверку на контроллере страницы регистрации? – infiniteRefactor
Нет, у меня нет этого контроллера, возможно, у Devise. Нужно ли его каким-то образом переписать? –