Rails 传递关联 ID 数组时不更新记录

Rails not updating record when passed an array of association ids

我说的对吗 Rails 将处理添加关联的 has_many 项目到一个对象,如果你将参数传递给像 tag_ids 这样的定义作为一个 ids 数组?

如果是这样,我将向我的项目控制器发布以下内容:-

{
    "title": "Bottle",
    "tag_ids": [25, 26]
}

发生的事情是 tag_ids 被忽略了。我已经添加了 ID 为 25 的标签,但没有包含 26。

我的控制器:-

# PATCH/PUT /api/items/1
  def update
    if @item.update(item_params)
      render json: @item, include: ['tags']
    else
       render json: @item.errors
    end
  end 

  def item_params
    params.require(:item).permit(:name, :tag_ids)
  end

项目 has_and_belongs_to_many 标签,它们有 table 个 jobs_tags 的连接。该关联有效,因为我在上面的回复中返回了标签。但是我似乎无法添加它们。知道我可能哪里出错了吗?

我是否需要向项目模型显式添加 tag_ids 字段?

tag_ids参数是一个数组。但是 permit(:name, :tag_ids) 只允许一个 tag_ids 属性。

将权限更改为:

def item_params params.require(:item).permit(:name, tag_ids: []) 结束

有关详细信息,请参阅 how to permit an array with strong parameters