Ruby on rails 在控制器中指定模型属性时使用强参数

Ruby on rails 在控制器中指定模型属性时使用强参数,ruby-on-rails,ruby-on-rails-4,model-view-controller,strong-parameters,Ruby On Rails,Ruby On Rails 4,Model View Controller,Strong Parameters,嗨,我的代码遇到了一个问题,我不确定在哪里使用强参数。在本例中,我使用预设值和来自表单的值的混合来设置文档对象 class DocumentsController < ApplicationController def add_document document_name = params[:document_name] document_parent_id = params[:doc_parent_id] @document = Document.new(name: do

嗨,我的代码遇到了一个问题,我不确定在哪里使用强参数。在本例中,我使用预设值和来自表单的值的混合来设置文档对象

class DocumentsController < ApplicationController
 def add_document
  document_name = params[:document_name]
  document_parent_id = params[:doc_parent_id]

  @document = Document.new(name: document_name, parent_id: document_parent_id, document_owner_id: current_user_id, created_by: current_user.name)
  @document.save
   #do flash stuff here
 end
类文档控制器
因此,表单仅通过params散列提交文档名称和文档父id。是否应使用强参数将这两个值列入白名单?如果是这样的话,我如何使用强参数来创建新文档,其中包含的其他值不是来自我的表单


谢谢。

1/是的,它应该被列入白名单

def add_document
  # stuff
  @document = Document.new(document_params.merge(
    document_owner_id: current_user_id, 
    created_by: current_user.name
  ))
  # stuff
end

def document_params
  params.require(:document).permit(:name, :parent_id)
end
2/若要不从表单提交,只需提交参数内的嵌套属性
文档
以及其他参数:

{ document: { name: '<Name>', parent_id: '<Id>' }, other_params: '...' }
{文档:{name:'',父对象id:'},其他参数:''.'}

1/是,应将其列入白名单

def add_document
  # stuff
  @document = Document.new(document_params.merge(
    document_owner_id: current_user_id, 
    created_by: current_user.name
  ))
  # stuff
end

def document_params
  params.require(:document).permit(:name, :parent_id)
end
2/若要不从表单提交,只需提交参数内的嵌套属性
文档
以及其他参数:

{ document: { name: '<Name>', parent_id: '<Id>' }, other_params: '...' }
{文档:{name:'',父对象id:'},其他参数:''.'}
这将允许您正确调用强params方法:

def document_params
   params.require(:document).permit(:document_name, :doc_parent_id)
end
实现这一点的方法是为
使用
表单(应与RESTful控制器结合使用):

这将允许您正确调用强params方法:

def document_params
   params.require(:document).permit(:document_name, :doc_parent_id)
end
实现这一点的方法是为
使用
表单(应与RESTful控制器结合使用):

document_name -> "name"
doc_parent_id -> "parent_id"
document_owner_id -> "owner_id"