【问题标题】:STI with Rails and Devise带有 Rails 和设计的 STI
【发布时间】:2015-11-06 12:06:53
【问题描述】:

我正在开发一个 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"
}

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

最好的方法是什么?

【问题讨论】:

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


    【解决方案1】:

    配置路线:

    devise_for :users
    devise_for :admins
    devise_for :partners
    

    生成设计视图

    rails generate devise:views user
    rails generate devise:views admin
    rails generate devise:views partner
    

    别忘了,在用户表中为您的 STI 添加类型字段

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      • 2014-01-19
      • 1970-01-01
      相关资源
      最近更新 更多