使用Rails中的强参数一次创建或更新多个记录4

use*_*109 5 ruby-on-rails multiple-instances strong-parameters

我有两个问题:


在Rails 3中,您可以使用更新多个记录

Product.update(params[:products].keys, params[:products].values)
Run Code Online (Sandbox Code Playgroud)

你如何使用强参数在Rails 4中做同样的事情?如何同时创建多个记录?您能否通过以下格式的示例详细说明您的解决方案:

params = ActionController::Parameters.new(...)
Product.create!(params.require(...)permit(...)
Run Code Online (Sandbox Code Playgroud)

此外,我的产品模型有一个名为number的列,它等于它们更新的顺序.有没有办法在更新时将计数器值传递给数字?

谢谢.

A53*_*08Y -1

也许您正在考虑使用nested_attributes?那看起来像这样:

params.require(:parent_model).permit(
  :id,
  child_models_attributes: [
    :id,
    :parent_model_id,
    :child_model_attribute_1,
    :child_model_attribute_2
  ]
)
Run Code Online (Sandbox Code Playgroud)

params = {
  id: parent_model.id,
  child_models_attributes: {
    '0' => {
      id: child_model_1.id,
      parent_model_id: parent_model.id,
      child_model_attribute_1: 'value 1',
      child_model_attribute_2: 12312
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

不过,您需要允许父模型使用nested_attributes,如下所示:

class ChildModel < Activerecord::Base
  belongs_to :parent_model
end

class ParentModel < Activerecord::Base
  has_many :child_models
  accepts_nested_attributes_for :child_models
end
Run Code Online (Sandbox Code Playgroud)