1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ストロングパラメーターの基本的な書き方と対応できないオブジェクト例

Posted at

なぜ記事を書こうと思ったか

Railsのアプリ開発している際に、ストロングパラメータで対応できないオブジェクトがあることを知った為、今回ストロングパラメータの基本的な書き方と一緒にこの記事にまとめようと思います。

ストロングパラメーターの書き方

基本的なオブジェクト

{
  name: "田中",
  age: 23
}
params.permit(:name, :age)

配列が入っている場合

{
  name: "田中",
  hobbies: [
    "サッカー", "映画鑑賞"
  ],
  age: 23,
  favorite_food: [
    "ラーメン", "寿司"
  ]
}

値に配列が入っているプロパティはストロングパラメーターで最後に記述する

params.permit(:name, :age, hobbies: [], favorite_food: [])

オブジェクトがネストした場合

{
  name: "田中",
  setting: {
    age: 23,
    department: "営業部"
  }
}

ネストしたプロパティもストロングパラメーターで最後に記述する

params.permit(:name, setting: [:age, department])

ストロングパラメーターで対応できないオブジェクトについて

ストロングパラメーターで全てのオブジェクトを対応している訳ではなく、直接、値を取得しないといけない場合もある。

二次元配列が入っている場合

{
  person: [
    "田中", "佐藤"
  ],
  setting: [
    [
      23, "営業部"
    ],
    [
      28, "開発部"
    ]
  ]
}

settingsをストロングパラメーターで取得しようとすると、エラーになる。

params.permit(person: [], setting: [[]])

settingsは直接取得する必要がある。

params.permit(person: [])
params[:setting]

最後に

 正直、二次元配列のようにストロングパラメータで書く事ができないオブジェクトがあることは知りませんでした笑(開発中にたまたま見つけました)
もし他にストロングパラメーターで書くことができないオブジェクトや他のストロングパラメーターの書き方がある場合は、コメントで教えていただけると嬉しいです。読んで頂きありがとうございました。

参考資料

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?