我在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_id
和responsible_id
附加到要发送更新的对象。