やりたいこと
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カラムが存在する。
もしこれが存在しない場合も解決策はある。
別の記事で先輩方が詳しくまとめていただいているので、割愛します。
参考サイト