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。
我说的对吗 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。