Ruby on rails 如何合并许可证中的嵌套属性+;轨道

Ruby on rails 如何合并许可证中的嵌套属性+;轨道,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我想在评论属性中添加用户id和项目id params.require(:task).permit(:summary, comments_attributes: [:id, :content]) 我试过使用下面的工具,但不起作用 user_id = current_user.id project_id = project.id 请帮我怎么做?您必须使用 首先将允许的参数转换为哈希,然后深度合并哈希: params.require(:task).permit(:summary, comme

我想在评论属性中添加用户id项目id

params.require(:task).permit(:summary, comments_attributes: [:id, :content])
我试过使用下面的工具,但不起作用

user_id    = current_user.id
project_id = project.id
请帮我怎么做?

您必须使用


首先将允许的参数转换为哈希,然后深度合并哈希:

params.require(:task).permit(:summary, comments_attributes: [:id, :content]).deep_merge(user_id: current_user.id, comments_attributes: [user_id: current_user.id, project_id: project.id])

虽然这是一个老问题,但正确的答案是->

在Rails 5中,您应该使用


这在Rails 5中是如何工作的?似乎
deep\u merge
不再是
ActionController::Parameters
的子类。对于Rails 5中的
deep\u merge
,我得到了一个
undefined方法
错误。@Tintin81检查新答案。祝你一切顺利
params.require(:task).permit(:summary, comments_attributes: [:id, :content]).deep_merge(user_id: current_user.id, comments_attributes: [user_id: current_user.id, project_id: project.id])
params.require(:task).permit(
    :summary,
    comments_attributes: [
        :id,
        :content
    ]
).to_h.deep_merge(
    user_id: current_user.id,
    comments_attributes: [
        user_id: current_user.id,
        project_id: project.id
    ]
)
 params[:task][:comments_attributes].merge!({user_id: current_user.id, project_id: project.id})
params.require(:task).permit(:summary, comments_attributes: [:id, :content]).reverse_merge(user_id: current_user.id, comments_attributes: [user_id: current_user.id, project_id: project.id])