0

我有一个Users模型,希望用户在发布内容时能够Subscribe向另一个模型User发送通知。

这是一种 has_many 自连接和 many_to_many 自连接。

我需要能够输入@user.subscribers@user.subscriptions

因此,从某种意义上说,默认情况下,这种关系是双向的。但是,如果to @user1 subscribes,那@user2并不意味着可以通过找到。@user2subscribed@user1@user2@user1@user.subscribers

我看过 Ryan Bates Railscast on Self-Referential Associations。但是,这会创建 1 种方式的自联接。但我认为这并没有留下双方之间可能存在两种关系的事实。

但是,我也看过有关关联外键的 Rails 指南。

我意识到我可能可以采用 Ryan Bates 的方式,并建立两个关系,但这似乎是错误的,但我担心第二种方式不会允许一个成为订阅者,一个成为提供者。解决此问题的最“正确”方法是什么?

4

1 回答 1

2

不要把事情复杂化

class Subs < ActiveRecord::Base

    belongs_to :subscriber, :class_name => 'User'
    belongs_to :user

end

class User < ActiveRecord::Base

    has_many :subs
    has_many :subscribers, :through => :subs, :source => :subscriber
    has_many :subscriptions, :through => :subs, :source => :user
end

显然,您必须在数据库中设置连接模型。那应该这样做。

于 2013-04-10T01:26:00.283 回答