我有一個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的經驗很少(在製作我自己的應用程序方面;我遵循了幾個教程)並且設計,所以我想知道,在繼續開發應用程序之前,如果我要遇到問題通過這種方式創建配置文件,設計或其他任何東西。有一個更好的方法嗎?
我想作爲一個可能的替代我在想,如果我要儘量覆蓋設計的創建用戶的動作,所以它創建在同一時間的相關資料。
它看起來不像任何人回答這個問題,你有任何輸入要添加?我對你發現的東西很感興趣。 – stephenmurdoch