假设我有一个用户。一个用户可以有几种喜欢的颜色。然后我让用户用某些喜欢的颜色来搜索其他用户。我应该如何构建这张表?有一个每种颜色有20列的表似乎是个坏主意,但试图在一列上进行字符串匹配似乎也很混乱。
Users
id name
1 Don
FavoriteColors
id user_id red green blue orange violet...
1 1 0 0 1 1 1
以及缩短的型号:
User
has_many :colors
FavoriteColor
belongs_to :user
查看2.6此处上的has_and_bellongs_to_many协会
has_and_belongs_to_many协会对于许多对许多关系来说,这将是最好的方法,因为它是正常化的。