带有Rails和Devise的STI

Hen*_*ulo 3 ruby authentication ruby-on-rails sti devise

我正在开发Ruby on Rails应用程序并使用devise来验证用户身份.

首先,我有这些模型:

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :lockable
end

class Admin < User
end

class Partner < User
end
Run Code Online (Sandbox Code Playgroud)

我在路线上的devise_for:

devise_for :users, :controllers => {
  :registrations => "registrations",
  :passwords => "passwords"
}
Run Code Online (Sandbox Code Playgroud)

我想做的事?我想为每个模型做一个单独的设计,具有不同的视图和不同的策略,例如:用户使用他的注册号和密码登录,管理员和合作伙伴登录电子邮件和密码(我认为管理员和合作伙伴设计可以是同样的,因为他们的登录战斗是相同的).

做这个的最好方式是什么?

Gea*_*ode 9

配置路由:

devise_for :users
devise_for :admins
devise_for :partners
Run Code Online (Sandbox Code Playgroud)

生成设计视图

rails generate devise:views user
rails generate devise:views admin
rails generate devise:views partner
Run Code Online (Sandbox Code Playgroud)

不要忘记,在用户表中为STI添加类型字段

class AddTypeToUser < ActiveRecord::Migration
  def up
    add_column :users, :type, :string
  end

  def down
    remove_column :users, :type
  end
end
Run Code Online (Sandbox Code Playgroud)