2011-10-03 99 views
3

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

目前我有:螺纹的has_many:用户

其中

用户需要user_id说明和THREAD_ID作为参数。如果找到user_id和thread_id的组合,则订阅用户,否则它们不是。

如果我想订阅一个用户,我需要将这个组合插入到数据库中。

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

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

想法如何进行?

回答

4

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

基本上你做这样的事情在你的线程模型如下:

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以获得用户的订阅。

+0

究竟是在哪里,我很高兴这是正确的道路,非常感谢。 – cjm2671