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)
我想做的事?我想为每个模型做一个单独的设计,具有不同的视图和不同的策略,例如:用户使用他的注册号和密码登录,管理员和合作伙伴登录电子邮件和密码(我认为管理员和合作伙伴设计可以是同样的,因为他们的登录战斗是相同的).
做这个的最好方式是什么?
配置路由:
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)