如何通过Devise在rails应用程序中构建两个用户模型(一个用于公共,另一个用于管理)

时间:2018-04-30 14:48:47

标签: ruby-on-rails ruby devise

我有书店(电子商务)的Rails应用程序。我有两个用户模型一个用于管理员,一个用户用户。我想显示管理员可以通过管理面板查看的所有用户,还希望看到客户显示页面。我已经为这两种类型的用户使用了设计。我遇到问题,因为设计生成所有注册并自动登录逻辑然后我如何将其重定向到我的应用程序视图中不在root中的某些位置。

1 个答案:

答案 0 :(得分:1)

Manohar我认为创建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

要设置修改或扩展控制器的功能,只需在控制器中创建一个设备目录,并将所需的控制器文件放在设计中。

这是我的一个应用程序的代码示例:

# registrations_controller.rb

class MyDevise::RegistrationsController < Devise::RegistrationsController 

   def new
      super
   end

   def create
      super
   end

   def update
      super
   end
 end

我刚刚在控制器的文件夹中创建了一个名为my_devise的文件夹,一旦你有了上面的代码,就可以根据需要为这些方法添加功能。