демо-аккаунт devise/ cancan

#ruby-on-rails #devise #cancan

#ruby-on-rails #разработать #cancan

Вопрос:

Я использую devise / cancan для своего приложения, и все довольно хорошо — при условии, что пользователь создает учетную запись и входит в систему.

Что я хотел бы сделать, так это разрешить пользователю начать работу без создания учетной записи. А затем зарегистрируйтесь, если они действительно хотят сохранить свою работу.

Кто-нибудь сталкивался с этим раньше? Должен ли я выяснить, как создавать фиктивные учетные записи с помощью devise? Или разрешить неавторизованным пользователям доступ к созданию моделей в моем приложении через CanCan?

Я мог бы подробно рассказать о том, как я думал о подходе к этому, но мне кажется, что это довольно очевидный вариант использования, для которого кто-то придумал хорошее решение.

Заранее спасибо, Майк

Ответ №1:

Если вы предпочитаете создавать фиктивные учетные записи, вам придется каким-то образом отслеживать пользователя с помощью cookie и кэшировать значения в этом cookie в вашей базе данных. Cancan допускает гостевые учетные записи с помощью модели способностей. Например:

 user ||= User.new # Guest user, for users who are not registered or don't have an account yet
  

Этого достаточно, чтобы вы начали с применения разрешений для незарегистрированных пользователей. Обратите внимание, однако, что отслеживание только с помощью файлов cookie не очень надежно и может привести к некоторому типу угрозы безопасности (например, с помощью взлома файлов cookie). Пользователь однажды также может решить удалить свои файлы cookie.

Если потребуется, я бы предложил разрешить пользователю минимальное взаимодействие с гостевой учетной записью и максимально мотивировать пользователя регистрироваться в Devise.

Надеюсь, это поможет!

Комментарии:

1. Спасибо, пока реализовал это таким образом. Кажется, пока все идет гладко.

Ответ №2:

На самом деле я рассматриваю ту же проблему, у меня есть приложение для планирования, которое создает календарь. Чтобы решить проблему, я думаю, что вы используете

 user ||= User.new
  

Как было предложено выше, с использованием файлов cookie для передачи данных в базу данных, как только пользователь создает учетную запись.
Это означало бы, что вам не придется беспокоиться об удалении файлов cookie, потому что они создадут учетную запись, если захотят сохранить данные.