2010-12-09 68 views
0

我正在使用Rails 3和Devise。各種用戶類型和帳戶創建表格的體系結構

我可以有兩種類型的用戶,我叫'管理員'和'客戶端',都存儲在用戶表中,由布爾'管理'列的價值區分。

的「管理員」可以創建2種方式:

1)在創建一個新帳戶 的 - 在這種情況下,我們還可以創建一個相關的「業務」記錄

2)從在現有帳戶中(這樣一個「生意」可以有多個「管理員」) - 的情況下,我們想將它與現有的業務記錄

一個「客戶」可以創建1路相關聯:

1)從比那些用於創建上述

的「管理員」在所有3例不同形式將被用於分離的形式。並提交後,他們都有不同的要求:

  • 我想發送不同的電子郵件給每個。
  • 在上面的第一個'admin'情況下,我需要檢查請求的商業網址是否唯一,在第二種情況下我不需要。而在客戶案例中,我沒有。
  • 在第一個'admin'情況下,我想在完成一個帳戶時創建一些默認數據庫條目,但不是在第二種情況下。
  • 當創建'客戶'帳戶時,我想執行一些特定於該帳戶類型的其他操作。

我應該爲不同的用戶類型使用相同的控制器,還是將它們分開?如果它們應該是相同的,它如何知道它應該創建什麼類型的用戶?

模型怎麼樣?

有關如何設計這個的任何想法?

非常感謝。

回答

0

我最初的猜測是從User創建兩個子類,稱爲AdminClient。像這樣的位:

class User < ActiveRecord::Base 
end 

class Admin < User 
    devise :database_authenticatable, :etc 

    after_create :create_business 
    validates_uniqueness_of :business_url 
    # etc 
end 

class Client < User 
    devise :database_authenticatable, :etc 
    # etc 
end 

接下來,您可以在config/routes.rb添加不同的形式:

YourApp::Application.routes.draw do 

    # for the cases that someone can create their own user 
    devise_for :clients 
    devise_for :admins 

    # for creating it when logged in as admin 
    namespace :backend do 
    resources :admins 
    end 
end 

請務必在STI在Rails的閱讀和讀取設計的文檔。

0

您可以使用此不同的動作的一個控制器和引導你的形式,這些行動:

form_tag(:controller => "people", :action => "search", :method => "get") 
rails form helpers

相關問題