所以我有一个有趣的模型: 我想记录订阅特定线程的用户列表。
目前我有:thread has_many:subscriber
,其中
订阅者将user_id和thread_id作为参数。如果找到user_id和thread_id的组合,则订阅用户,否则他们不订阅。
如果我想订阅用户,我需要将此组合插入数据库。
如果我想“取消订阅”用户,我需要从数据库中删除此组合。
我是否需要为此使用标准的ActiveRecord设置,还是应该更改一下?如果我在没有框架的情况下这样做,我会得到一个task_id和user_id的联合密钥,但我不知道这是否可以在rails中使用。
关于如何进行的想法?
答案 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
以获取用户的订阅。