深入解析用户关注关系的数据模型与实现
在构建涉及用户关注功能的应用时,合理的数据模型设计至关重要。本文将深入探讨如何设计和实现用户关注关系的数据模型,包括模型的构建、关联的建立、验证以及相关方法的实现。
1. 数据模型问题与解决方案
在构建用户关注的数据模型时,我们先考虑一个典型场景:用户A关注用户B,A是关注者(follower),B是被关注者(followed)。按照Rails默认的复数化规则,关注某个用户的所有用户集合称为该用户的“followers”,但表示被关注用户的集合用“followeds”既不符合语法又显得笨拙。虽然“following”在日常英语中表示关注你的人,即“followers”,与我们想要表达的意思相反,但我们仍会用“following”作为标签,如“50 following, 75 followers”,而用“followed users”来表示被关注的用户集合,对应 user.followed_users 数组。
最初我们可能会尝试用一个 followed_users 表和 has_many 关联来建模被关注用户。但这个数据模型存在严重问题:
- 数据冗余 :每一行不仅包含被关注用户的 id ,还包含他们的其他信息,而这些信息已经存在于 users 表中。
- 维护困难 :如果要建模用户的关注者,还需要一个类似的冗余的 followers 表。并且每次用户信息(如姓名)发生变化
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



