2013-03-28 96 views
3

我有一個Rails應用程序與三種用戶,專業人員,學生和普通公民。因此,我用三種不同的配置文件製作了多用戶模型。添加用戶配置文件的設計註冊控制器

User.rb

belongs_to :profile, polymorphic: true 

Professional.rb

has_one :user, as: :profile, dependent: :destroy 

Student.rb

has_one :user, as: :profile, dependent: :destroy 

Citizen.rb

has_one :user, as: :profile, dependent: :destroy 

我想使用設計爲中心註冊和創建的用戶模型

rails generate devise User 

,然後我創建的從設計註冊記憶控制器繼承了註冊記憶控制器色器件,並在after_sign_up_path_for方法,我分配用戶無論用戶在註冊表單上選擇哪些配置文件。

class RegistrationsController < Devise::RegistrationsController 
    protected 

    def after_sign_up_path_for(user) 

    if user.professional === true 

     user.profile = ProfessionalProfile.create! 
     user.save! 
    elsif 
     .... 

    end 
end 

眼下,這個工作,因爲,通過在應用程序控制器重寫def after_sign_in_path_for(resource),我可以將用戶重定向到他們創建的任何個人資料

def after_sign_in_path_for(resource) 

    if current_user.profile_type === 'ProfessionalProfile' 
     professional_profile_path(current_user) 

    elsif 
     .... 
    end 

然而,即使這個工作,我有Rails的經驗很少(在製作我自己的應用程序方面;我遵循了幾個教程)並且設計,所以我想知道,在繼續開發應用程序之前,如果我要遇到問題通過這種方式創建配置文件,設計或其他任何東西。有一個更好的方法嗎?

我想作爲一個可能的替代我在想,如果我要儘量覆蓋設計的創建用戶的動作,所以它創建在同一時間的相關資料。

+0

它看起來不像任何人回答這個問題,你有任何輸入要添加?我對你發現的東西很感興趣。 – stephenmurdoch

回答

1

您可以通過使用代碼列添加到用戶表:

rails generate migration add_professional_to_users professional:boolean 

,同樣

rails generate migration add_student_to_users student:boolean 

rails generate migration add_citizen_to_users citizen:boolean 

這是根據我一個更好的方法作爲一個類似的方法描述設計創建一個管理員,請看這裏:devise,option1

同樣,您可以添加這些角色。只是一種選擇,但我覺得更好。

相關問題