在Rails 4中使用嵌套属性更改关联

时间:2013-09-21 22:16:39

标签: ruby-on-rails json rails-activerecord

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

0 个答案:

没有答案