Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在一个属性中存储多个外键_Ruby On Rails - Fatal编程技术网

Ruby on rails 在一个属性中存储多个外键

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",

我正在开发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",
  "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。是的,一个街区可以属于许多员工。我明白这是一种多对多的关系。那么你为什么不使用这个:或这个: