2012-01-17 53 views
0

我的基本組模型看起來大致是這樣的(簡化):在Rails中填補時間序列中的空白?

[ PayPeriod ] 
id 
start_date 
end_date 
notes 

[ Transaction ] 
id 
amount 
fkPayPeriod 

當用戶登錄時,我想用最後4支付期的列表呈現它們。用戶可以選擇一個支付期限來輸入票據和交易。

我傾向於只是做這樣的事情在控制器:

def index 
    @pay_periods = PayPeriod.get_or_create_last(4) 
end 

的PayPeriod模型本身將實施的行爲,併爲用戶所使用的應用程序記錄將被創建「需求」。

另一種方法可能是讓其他(後臺)流程每天通過賬戶進行梳理以主動創建新的PayPeriods。雖然這兩種解決方案都沒有讓我覺得特別具有挑戰性,但我想從其他人的角度對其他用戶覺得這個功能屬於概念的一些反饋。

回答

1

我想說這取決於PayPeriod在概念上的含義。它是對一個共同日曆上的時間段的普遍描述(即,2011年有26個支付期各爲兩週)?如果是這樣,那麼創建所有PayPeriods都屬於你的db/seeds.rb文件。

如果一個PayPeriod屬於一個帳戶,我會說最後四個PayPeriods的創建屬於該帳戶的after_create掛鉤。從那裏開始,我認爲最好的做法是按照用戶的需求創建新的PayPeriods;也就是說,我第一次將註釋或交易添加到PayPeriod可能是它應該創建的時候。

如果出於任何原因,您有一個允許用戶編輯特定窗口PayPeriods的系統策略(例如,您可以編輯此日曆年和下一個日曆年),那麼您可以設置一個Rake任務並掛鉤它最多可以運行一個Cron作業,但通常需要運行它(例如,如果您按日曆年限制窗口,則可以設置一個Cron作業,以便在每年的1月1日凌晨12:01運行,以創建年份PayPeriods)。