我正在使用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
我在路线上的devise_for:
devise_for :users, :controllers => {
:registrations => "registrations",
:passwords => "passwords"
}
我想做什么?我想为每个模型做一个单独的设计,具有不同的视图和不同的策略,例如:用户使用他的注册号和密码登录,管理员和合作伙伴登录电子邮件和密码(我认为管理员和合作伙伴设计可以是同样的,因为他们的登录战斗是相同的。)
这样做的最佳方式是什么?
答案 0 :(得分:9)
配置路线:
<select name="state_public" id="id_state_public" class="form-control">
<option selected="selected" value="1">Open for Applications</option>
<option value="2">In Progress</option>
<option value="(3,)">Closed</option>
<option value="(4,)">Not Public</option>
</select>
生成设计视图
devise_for :users
devise_for :admins
devise_for :partners
别忘了,在STI的用户表中添加类型字段
rails generate devise:views user
rails generate devise:views admin
rails generate devise:views partner