带有Rails和Devise的STI

时间:2015-08-13 13:28:37

标签: ruby-on-rails ruby authentication devise sti

我正在使用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"
}

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

这样做的最佳方式是什么?

1 个答案:

答案 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