2012-07-26 34 views
1

我正在爲一個應用程序設計數據模型,其中我有不同類型的用戶,如學生,員工,家長等。讓我們說他們每個人都被稱爲人。 我對這些包含實體特定信息的實體都有單獨的表。我有一個包含像我已經建立了兩列的幫助下對 用戶表用戶和其他人之間的關係LOGIN_ID,密碼等 用戶特定信息的用戶表: 1.爲person_id整數 2. person_type整數用戶和人員協會

下面是類定義:

class User < ActiveRecord :: Base 
    belongs_to :person, :polymorphic =>true, :dependent => :destory 
end 

class Student < ActiveRecord :: Base 
    has_one :user, :as => :person 
end 

class Parent < ActiveRecord :: Base 
    has_one :user, :as => :person 
end 

class Employee < ActiveRecord :: Base 
    has_one :user, :as => :person 
end 

我想這種設計您的寶貴意見。它是好的還是需要做任何改變?

+0

上述設計的問題是,如果我銷燬學生,關聯的用戶不會自動銷燬。有沒有辦法可以指定如果一個人(學生或僱員或父母)被銷燬,那麼相應的應該被自動銷燬? – Venkat 2012-07-26 09:56:48

+0

看'依賴'選項'has_one'。 http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_one – 2012-07-26 10:13:28

+0

謝謝Denis!你的建議奏效了。當我在Person(學生或員工或家長)上設置:dependent =>:destroy並在Person上調用destory方法時,相應的用戶記錄將自動刪除。 – Venkat 2012-07-30 12:32:38

回答

0

這一切都歸結於您的應用程序的業務邏輯。從我迄今爲止的理解。我會保持簡單,並有一個名爲User的模型/表格,並有一列category,它們區分用戶的類型。

否則,你也可以有布爾列:student,parent,employee。然後你可以做這樣的事情:

If @user.student 
    ... do something here 
elsif @user.parent 
    ... etc etc