如何观察模型的变化?

时间:2012-03-20 21:42:05

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 model

假设您有2个型号......

Store :has_many products 
Product :belongs_to store

..而Product模型的属性为:price

我希望有一个视图,向用户显示产品价格下降的最新价格。我不知道从哪里开始。如果我想让用户选择要观看哪些产品呢?你会如何设置它?

3 个答案:

答案 0 :(得分:3)

您可以从价格模型的ActiveRecord Observers开始,每次价格变动时触发通知。

然后,您可以在订阅者列表中扇出这些通知。 pub / sub框架有很多解决方案。一个是Rails的本机内置通知API,在JoséValim的书Crafting Rails Applications中有详细解释。另一个是Faye gem,请查看their site

其他选项包括EventMachine,Node.js或Websockets。

答案 1 :(得分:2)

我要做的是添加一个字段“趋势”或类似的东西,我会在每次价格变化时更新(使用回调或观察者),并将其设置为“增加/减少”,或者某事那有意义。然后,我会查找趋势减少且最近更新(根据updated_at)的所有产品,最近是您定义的值,它可以是“在过去两周内”,“自用户上次登录后”等等。

答案 2 :(得分:1)

我会在调查时使用ajax。

在服务器端,我会有一份后台工作(从后台,救援,cron等中选择)。 每个轮询间隔我都会看到事情是否发生了变化,如果有,则显示内容。

我会跟踪使用时间戳的变化并与Now()进行比较。