Rails 和 Devise 的 STI
STI with Rails and Devise
我正在 Rails 应用程序上开发 Ruby 并使用设备对用户进行身份验证。
首先,我有这些模型:
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"
}
我想做什么?我想为每个模型做一个单独的设计,具有不同的视图和不同的策略,例如:用户使用他的注册号和密码登录,管理员和合作伙伴使用电子邮件和密码登录(我认为管理员和合作伙伴设计可以相同,因为他们的登录策略是相同的)。
最好的方法是什么?
配置路由:
devise_for :users
devise_for :admins
devise_for :partners
生成设计视图
rails generate devise:views user
rails generate devise:views admin
rails generate devise:views partner
别忘了,在用户 table 中为您的 STI 添加类型字段
class AddTypeToUser < ActiveRecord::Migration
def up
add_column :users, :type, :string
end
def down
remove_column :users, :type
end
end
我正在 Rails 应用程序上开发 Ruby 并使用设备对用户进行身份验证。
首先,我有这些模型:
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"
}
我想做什么?我想为每个模型做一个单独的设计,具有不同的视图和不同的策略,例如:用户使用他的注册号和密码登录,管理员和合作伙伴使用电子邮件和密码登录(我认为管理员和合作伙伴设计可以相同,因为他们的登录策略是相同的)。
最好的方法是什么?
配置路由:
devise_for :users
devise_for :admins
devise_for :partners
生成设计视图
rails generate devise:views user
rails generate devise:views admin
rails generate devise:views partner
别忘了,在用户 table 中为您的 STI 添加类型字段
class AddTypeToUser < ActiveRecord::Migration
def up
add_column :users, :type, :string
end
def down
remove_column :users, :type
end
end