1
1

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 3 years have passed since last update.

【Rails】特定のカラムを更新したい場合の対応策

Last updated at Posted at 2021-04-22

やりたいこと

ZIPダウンロード処理時に、ダウンロードする画像名を

dl_image_nameカラムに保存・更新したい。が、なぜかできない。

前提条件:別でimageカラムが存在する。

原因

既存のバリデーションに引っかかっていたみたい。

常にバリデーションを実行するようになっていた。

解決策

上記のやりたいことを実行するためには、バリデーションが邪魔。

バリデーションを、以下のような処理で実行しないようにする。

言い換えると、特定の部分で別のバリデーションをする処理にする。

@order.save(context: :update_dl_image_name)

これは、update_dl_image_nameコンテキストで

@orderをバリデーションしてから保存する処理になる。

ここまでできたら、次はバリデーションをありにするか?なしにするか?

バリデーションありにする場合

validates :dl_image_name, on: :dl_image_name # context: :dl_image_nameのときだけバリデーションする

context: :dl_image_nameのときだけバリデーションするようにする。

バリデーションなしにする場合

特になにもしない


上記の対応で無事に保存できた!

前提条件で記載した、別でimageカラムが存在する。

もしこれが存在しない場合も解決策はある。

別の記事で先輩方が詳しくまとめていただいているので、割愛します。

参考サイト

1
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?