Rails:accepted_nested_attributes_for带有“强参数”,需要在params中使用ID

时间:2014-09-13 19:46:58

标签: ruby-on-rails nested-attributes strong-parameters

假设模型Book,其中包含:

class Book < ActiveRecord::Base
  has_many: pages
  accepts_nested_attributes_for :pages

要更新Page记录而不是创建新记录,Rails需要在“强参数”中允许嵌套模型的ID(此处为:Page)。{{ 1}}实例):

Book

但是,在“强参数”中包含def update @book.update(book_params) end private def book_params() params.require(:book).permit(:title, :author, :published, pages_attributes: [:id, :word_count, :line_count]) # <= this ID in here end 是否会破坏他们的目的? (含义:用户可以提交错误的ID,导致错误的关联。)

1 个答案:

答案 0 :(得分:3)

Rails确保您尝试更新的页面属于本书。如果您尝试更改表单中的页面ID,则会出现错误:

  

对于ID为1的图书,找不到ID为3的网页