Ruby on rails 在一个属性中存储多个外键
我正在开发RailsAPI。 在一列中保存外键数组时遇到问题。 有两种模型:Block和Employee。员工有很多街区,街区有很多员工。多对多关系。 这是block的索引Ruby on rails 在一个属性中存储多个外键,ruby-on-rails,Ruby On Rails,我正在开发RailsAPI。 在一列中保存外键数组时遇到问题。 有两种模型:Block和Employee。员工有很多街区,街区有很多员工。多对多关系。 这是block的索引 [{ id:1, name: "Block A" }, { id:2, name: "Block B" }, { id:3, name: "Block C" } ] 这是员工职务请求的主体 { "first_name":"John", "last_name": "Smith",
[{
id:1,
name: "Block A"
},
{
id:2,
name: "Block B"
},
{
id:3,
name: "Block C"
}
]
这是员工职务请求的主体
{
"first_name":"John",
"last_name": "Smith",
"email": "smith@gmail.com",
"block_ids":'[1, 2, 3]'
}
创建雇主时,用户必须指定雇员控件的块。在block_id列中,我想存储上述块的外键
1个问题:如何在一个模型属性中使用数组存储多个外键
因此,Smith控制ID等于1、2和3的块
2个问题:然后使用rails控制器如何知道用户控制哪些块。我的意思是如何通过将在block_ids属性中指定的ID来知道块的名称。这是错误的方法。不要将外键存储在数组中。改为创建联接表 在最简单的安排中,使用。这适用于不需要将连接两个模型的东西称为一个独立的东西的情况,例如汽车有许多部件。如果连接是真实的,例如连接医生和患者的预约,则使用连接表,其中连接表有自己的模型
这些方法之所以更好,是因为如果将外键存储在数组中,SQL将无法使用正确的联接来查询数据。此外,您无法将它们专门标记为外键,因此如果您需要,数据库将无法强制执行。您有什么问题?“你想干什么?”史蒂夫特森。我编辑了我的问题您的员工可以有多个区块,一个区块可以属于多个员工吗?在Rails中,我们不这样存储数据,您必须创建自定义方法来获取数据。@Deep。是的,一个街区可以属于许多员工。我明白这是一种多对多的关系。那么你为什么不使用这个:或这个: