Rails在哪里填补时间序列的空白?

时间:2012-01-17 06:29:39

标签: ruby-on-rails model-view-controller architecture

我的基本模型看起来大致如下(简化):

[ 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 个答案:

答案 0 :(得分:1)

我说这取决于PayPeriod在概念上是什么。它是对共同日历上的时间段的通用描述(即,2011年有26个支付期,每个支付期为两周)?如果是,那么所有PayPeriods的创建都属于您的db / seeds.rb文件。

如果PayPeriod属于某个帐户,我会说最后四个PayPeriods的创建属于相关帐户的after_create挂钩。从那里开始,我认为最好的做法是根据用户的需要创建新的PayPeriods;也就是说,我第一次向PayPeriod添加注释或事务可能是应该创建它的时候。

如果出于任何原因,您有适当的系统策略允许用户编辑PayPeriods的特定窗口(例如,您可以编辑此日历年和下一个日历年),那么您可以设置Rake任务并将其连接到运行它的Cron作业,但通常需要运行它(例如,如果你按日历年限制你的窗口,那么你可以设置一个Cron作业,每年1月1日凌晨12:01运行创建年份PayPeriods)。