我的基本模型看起来大致如下(简化):
[ 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。虽然这两种解决方案都没有让我感到特别具有挑战性,但我希望得到一些关于其他人认为此功能在概念上属于何处的反馈。
答案 0 :(得分:1)
我说这取决于PayPeriod
在概念上是什么。它是对共同日历上的时间段的通用描述(即,2011年有26个支付期,每个支付期为两周)?如果是,那么所有PayPeriods
的创建都属于您的db / seeds.rb文件。
如果PayPeriod
属于某个帐户,我会说最后四个PayPeriods
的创建属于相关帐户的after_create
挂钩。从那里开始,我认为最好的做法是根据用户的需要创建新的PayPeriods
;也就是说,我第一次向PayPeriod
添加注释或事务可能是应该创建它的时候。
如果出于任何原因,您有适当的系统策略允许用户编辑PayPeriods
的特定窗口(例如,您可以编辑此日历年和下一个日历年),那么您可以设置Rake任务并将其连接到运行它的Cron作业,但通常需要运行它(例如,如果你按日历年限制你的窗口,那么你可以设置一个Cron作业,每年1月1日凌晨12:01运行创建年份PayPeriods
)。