假设模型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
,导致错误的关联。)
答案 0 :(得分:3)
Rails确保您尝试更新的页面属于本书。如果您尝试更改表单中的页面ID,则会出现错误:
对于ID为1的图书,找不到ID为3的网页