在使用连接表时,如何处理重复的副作用 – 即回报友谊等

在rails中使用连接表总是会给我带来麻烦,特别是在假定往复时必须创建重复的条目。 即我添加某人作为朋友,我自动成为他们的==需要两个连接。

拿一个简单的收据应用程序,跟踪两个人,谁花了什么。

用户可以拥有多个朋友。 对于每个FRIEND,他们可以跟踪多个TABS(即用于杂货的标签,另一个用于账单等),每个TABS由USER添加多个RECEIPTS。

所以在这种情况下,我需要一个FRIENDSHIP表,如果我假设当一个用户将另一个用户声明为朋友时,我需要创建两个友谊,这个手势是回报的。 这就是我的问题。 我需要将共享TAB链接到两个FRIENDSHIPS。 这基本上是在说

友谊有很多标签,标签有很多友谊。

这涉及另一个联接表…我是对的吗?

它似乎有很多重复,我想知道是否有更好的方法来做到这一点,或者你如何在你的代码中妥善处理这个? 你是否创造了许多回调以确保何时对一个友谊做了什么,对另一个友谊又重复了什么?

这是一种看似合理的方法,如果不是最好的方法:

http://www.dweebd.com/sql/modeling-bidirectional-graph-edges-in-rails/

我可能是错的…如果我错了,请纠正我,刚刚启动轨道

User has_many :friend , :through => friendship has_many :tab , :through => friend Friendship belong_to :user belong_to :friend , :foreign_key => "user_id" , class_name => "User"