2015-08-13 4 views
3

Я работаю над приложением Ruby on Rails и с помощью устройства для аутентификации пользователя.STI с 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" 
} 

Что я хочу сделать? Я хочу сделать отдельное приложение для каждой модели, с разными представлениями и другой стратегией, например: логин пользователя с его регистрационным номером и паролем, имя администратора и партнера с электронной почтой и паролем (я думаю, что администратор и партнер могут то же самое, потому что их стратагия входа одинакова).

Каков наилучший способ для этого?

ответ

9

Настройка маршрутов:

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 
Смежные вопросы