2012-01-17 51 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)。