0

我在 Rails 4 中有一个 JSON api 后端。我正在尝试使用accepts_nested_attributes_for.

#models/section.rb
class Section < ActiveRecord::Base
  belongs_to :project
  belongs_to :responsible, class_name: "User"

  accepts_nested_attributes_for :project, :responsible, allow_destroy: true
end

#controllers/api/section_controller
  def section_params
    params.require(:section).permit(:title, :body, :status, responsible_attributes: [:id], project_attributes: [:id])
  end

与问题相关的部分json:

{
  section: {
    ...
    project_attributes: { id: 5 }
    responsible_attributes: { id: 2 }
    ...
  }
}

这最终会引发Couldn't find Project with ID=5 for Section with ID=84. Section.update_attributes(section_params)我想那是因为它试图找到关联,但它不存在,因为这是我试图改变它的方式。

我的主要问题是:有没有办法使用嵌套参数使关联更改工作?我想这样做,而不是:project_id保持:responsible_id客户端模型的完整性,而不是同时拥有project: {:id, etc}project_id:.

我正在使用客户端序列化程序将嵌套模型名称转换为具有_attributes后缀。在最坏的情况下,我将不得不使用它来追加project_idresponsible_id发送对象以进行更新。

4

0 回答 0