我有两张桌子。
users
superpowers
我希望每个user
限制为一个superpower
。但不同的users
可以具有相同的superpower
。 (山姆可以有火,约翰可以有闪电,萨拉也可以有闪电。但每个用户只能拥有一个超能力)
我想将外键存储在用户表中。
has_one
和belongs_to
关系适合此吗?
user
has_one
superpower
。
superpower
belongs_to
user
rails指南说has_one建立了一对一的关系。但是,细微的细微差别没有得到解决:是否属于"属于"模型(即superpowers) can belong to multiple "has_one-ing" models (i.e.
用户`),其中每个关联是一对一的关系(例如,约翰有闪电,莎拉也有闪电)。
或者,是否意味着"属于"模特和"有"模型必须在所有关联中都是唯一的? (例如,如果约翰有照明,莎拉不能有闪电)?
答案 0 :(得分:3)
查看您的描述(特别是关于外键位于users
表中的部分),关系应该是:
Superpower.has_many :users
User.belongs_to :superpower
关联的belongs_to
部分始终位于具有外键的模型中。