Как структурировать двухпользовательскую модель (одну для публичной и другую для админки) в приложении rails через Devise - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть приложение Rails для Книжного магазина (электронная коммерция). У меня есть две модели пользователей: один для администратора и один для клиента Я хочу показать всем пользователям, которых администратор может видеть через панель администратора, а также я хочу видеть страницу показа клиентов. Я использовал devise для обоих типов пользователей. Я сталкиваюсь с проблемами, потому что devise генерирует все подписки и автоматически регистрируется в логике, тогда как я могу перенаправить их туда, где в моем представлении приложения нет прав root.

1 Ответ

0 голосов
/ 30 апреля 2018

Манохар. Думаю, создавать 2 модели не нужно. Вы можете просто сгенерировать пользовательскую модель с помощью Devise, а затем просто выполнить миграцию следующим образом:

class AddAdminToUsers < ActiveRecord::Migration
   def change
      add_column :users, :admin, :boolean, default: false
   end
end

Который в основном создаст флаг, позволяющий вам сделать что-то вроде этого:

if current_user.admin?

end

Если на странице потенциально не может быть установлен current_user, то:

if current_user.try(:admin?)

end

Теперь для доступа к контроллерам из Devise это ссылка:

https://github.com/plataformatec/devise/tree/master/app/controllers/devise

Чтобы установить, изменить или расширить функциональность контроллеров, просто создайте каталог devise внутри контроллеров и поместите необходимые файлы контроллеров внутри устройства devise.

Это пример кода одного из моих приложений:

# registrations_controller.rb

class MyDevise::RegistrationsController < Devise::RegistrationsController 

   def new
      super
   end

   def create
      super
   end

   def update
      super
   end
 end

Я только что создал папку с именем my_devise в папке моего контроллера, когда у вас есть код выше, вы можете просто добавить функциональность к методам по вашему желанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...