目次
概要
業務でハッシュを要素とする配列をストロングパラメータで受け取るのを実装したので、忘れないように実装方法を振り返ってみようと思います。
実装
フロント側から渡す値
以下のような値をフロント側から渡します。
params = { products: [ { date: '2022-11-25', weight: 70, }, { date: '2022-11-25', weight: 60, }, ] }
ストロングパラメータ
def create_params params.permit( products: [ :date, :weight, ], ).to_h[:products] end
実行結果
[{"date"=>"2022-11-25", "weight"=>70}, {"date"=>"2022-11-25", "weight"=>60}]
最後に to_h[:products]
を呼び出すことで、ActionController::Parametersのインスタンスを、ハッシュを要素とする配列に変換できます。あとはそれぞれのハッシュでインスタンスを作成してsave!を使うことで、各要素をDBに保存することができます。
感想
permit内でのキーの指定方法が独特なので、また使う場面が出てきたら、この記事を見ようと思います。