rails中订阅的模型

时间:2011-10-03 17:35:12

标签: ruby-on-rails

所以我有一个有趣的模型: 我想记录订阅特定线程的用户列表。

目前我有:thread has_many:subscriber

,其中

订阅者将user_id和thread_id作为参数。如果找到user_id和thread_id的组合,则订阅用户,否则他们不订阅。

如果我想订阅用户,我需要将此组合插入数据库。

如果我想“取消订阅”用户,我需要从数据库中删除此组合。

我是否需要为此使用标准的ActiveRecord设置,还是应该更改一下?如果我在没有框架的情况下这样做,我会得到一个task_id和user_id的联合密钥,但我不知道这是否可以在rails中使用。

关于如何进行的想法?

1 个答案:

答案 0 :(得分:4)

您可以使用“has_many:through”ActiveRecord关联。您可以在Rails Guides for Active Record找到更多信息。

基本上,您在Thread模型中执行以下操作:

has_many :subscriptions
has_many :subcribers, :through => :subscriptions

然后做:

has_many :subscriptions
has_many :subscribed_threads, :through => :subscriptions

在您的订阅者/用户模型中。

在您的订阅模型中,您将拥有以下内容:

has_many :threads
has_many :subscribers

您需要创建thread_subscribers表和模型,以正确连接所有内容。但最后您可以执行myThread.thread_subscribers并获取线程订阅者列表或user.subscribed_threads以获取用户的订阅。