2011-06-29 57 views
0

我想組合一個可以跟蹤「用戶」考勤的應用程序(ruby on rails + mysql),但是,我正在努力如何將數據組織到表中。我會很感激可能的表/遷移結構的建議。以下是我想出迄今:考勤跟蹤應用程序中的遷移和模型

出勤率

date DATE 
user_id INT 
status INT 

從本質上講,我想(很像考勤登記),標誌着一個「用戶」本作一整天/半天或缺席。我希望能夠在不同的時期(即過去30天,15天,3天等)查看用戶的出勤記錄。

謝謝。

回答

2

我會使用三種模式:日,用戶和記錄。

class Day < ActiveRecord::Base 
    has_many :records 
end 

class User < ActiveRecord::Base 
    has_many :records 
end 

class Record < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :day 
end 

Day顯然有一個日期字段,並Record將有一個狀態字段來保存用戶是否存在,不存在,等等,在這一天。

像這樣構造它可以讓你按用戶查詢,日期(包括範圍),狀態或三者的任意組合。

例如,計算用戶的缺席:

Record.where(:user_id => @user.id, :status => 'absent').count 
+0

那不是我能夠通過用戶,日期(包括範圍),狀態等進行查詢,如果有隻有兩個型號,'Record'和'用戶',以及? – dakin

+0

你可以,但它不允許你爲每一天添加任何額外的屬性。例如,讓'Day'獨立於'Record'可以讓你添加諸如'Notes'字段或'Holiday'標籤之類的東西。它更加靈活,使得將來添加更容易。 – Luke