我想为我的 Web 应用程序设置一个简单的通知系统,它是用 Ruby on Rails 编写的。我的网站是一个简单的拍卖网站,但每次拍卖都有 2 个阶段:一个 5 天的“无最低出价”阶段,任何人都可以出价;一个 3 天的“最低出价 1 美元”阶段,只有前 10% 的投标人阶段可以出价。
我想在拍卖从第一阶段进入第二阶段时通知我的用户。做这个的最好方式是什么?
我想到了两种设计方案:
我不知道 RoR 有这个,以及这是否是一个有效的系统(因为我想建立一个系统,让成千上万的用户参与数百次拍卖 - 它是否变得那么大无关紧要,这有点像我学习编写高质量、可扩展的 RoR 的一个附带项目)但基本上,当用户在拍卖中出价时,他们会成为拍卖中的某种观察者。然后,不知何故,在第 5 天的时候,所有的听众都会收到通知。我不知道该触发器是如何在 RoR 中发生的(有没有办法说“在创建后 5 天后触发”或类似的事情?)。总而言之,我想使用观察者模式。
对我来说,关键问题是试图弄清楚如何在一段时间后触发。我认为,最好的方法是为每次拍卖设置一些称为“拍卖状态”的状态变量。一段时间后,这种情况会发生转变,届时拍卖中的每个观察者都会收到通知。
每天有一个 rake 任务在每天的某个固定时间运行。它通过每次拍卖,如果在第 6 天有任何拍卖,则通知该拍卖的观察者。这似乎是一种非常糟糕的方式——我喜欢有状态拍卖的想法。
想法?
谢谢!林戈