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