【问题标题】:Rails: accepts_nested_attributes_for with "strong parameters" requiring IDs in paramsRails:accept_nested_attributes_for 带有“强参数”,需要参数中的 ID
【发布时间】:2014-09-13 19:46:58
【问题描述】:

假设一个模型Book,具有:

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

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

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

但是在“强参数”中包含IDs 不是违背了他们的目的吗? (意思是:用户可以提交一个错误的ID,导致错误的关联。)

【问题讨论】:

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


    【解决方案1】:

    Rails 确保您尝试更新的页面属于该书。如果您尝试在表单中更改页面 ID,则会收到错误消息:

    找不到 ID=1 的书的 ID=3 的页面

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多