【发布时间】:2013-12-13 20:47:01
【问题描述】:
我正在尝试使用户可以订阅论坛,并且当论坛更新时,用户会收到警报。我一生都无法弄清楚如何设置数据库来做到这一点。我很确定您应该使用 user_id 和 forum_id 设置关联表,但我不确定。如果有人可以给我一些关于如何开始或计划的指导,甚至可以为我指出一些很棒的资源。
提前致谢。
【问题讨论】:
标签: ruby-on-rails database-design
我正在尝试使用户可以订阅论坛,并且当论坛更新时,用户会收到警报。我一生都无法弄清楚如何设置数据库来做到这一点。我很确定您应该使用 user_id 和 forum_id 设置关联表,但我不确定。如果有人可以给我一些关于如何开始或计划的指导,甚至可以为我指出一些很棒的资源。
提前致谢。
【问题讨论】:
标签: ruby-on-rails database-design
创建一个名为 user_forum_subscriptions 的连接表
class UserForumSubscription < ActiveRecord::Base
self.table_name = "user_forum_subscriptions"
belongs_to :user
belongs_to :forum
end
class User < ActiveRecord::Base
has_many :user_forum_subscriptions
end
class Forum < ActiveRecord::Base
has_many :user_forum_subscriptions
has_many :users, :through => :user_forum_subscriptions
end
现在,forum.users 是您在论坛发生变化时需要提醒的人
【讨论】:
我想您应该从生成一个名为 Subscription 的新模型开始。将订阅视为资源。用户应该有_many 可以添加/删除/编辑的订阅。
我可能会从 Michael Hartl 的教程第 11 章开始,其中他展示了如何为他的类似 twitter 的应用程序建立“跟随”关系。在许多方面,它与您要完成的任务相似。 Here's the link,阅读关系模型,希望它是您正在寻找的。p>
【讨论】:
我可能会做一些事情,比如用user_id、forum_id 和user_last_notified_date 列构建一个表。
然后每隔一段时间(每小时,也许每天)我会启动一个进程,在论坛中查找最新更新,查找订阅该论坛的用户,然后检查user_last_notified_date 列。如果该列为空白或在最近的论坛更新之前,则向这些用户发送通知。
如果需要更即时的通知,那么每当更新论坛时,基本上都运行相同的过程,可能会忽略进行更新的用户(因此,每当您进行论坛更新时,您都不会收到通知)。
【讨论】: