createやupdateは、『on: :update』とか付与することでバリデーションを選べますが、自分が作ったアクション名にバリデーションをかける場合の方法はあるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
自己解決
これでいけました。
on: :return_ref
@return_list.save(context: :return_ref)
投稿2020/09/25 02:26
総合スコア65
0
validates :column, 条件, on: :hoge
のようにバリデーションをかければ、それをチェックしたい箇所でmodel.valid?(:hoge)
とすることで、当該のバリデーションを特定のタイミングで稼働することができます(Rails Guide)。
投稿2020/09/18 13:30
総合スコア146018
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
無理です。その発想が間違いです。
そもそもモデルのバリデーションのon: :xxx
はアクション名ではありません。
モデルの新規登録(SQLのINSERT)は、on: :create
で、
更新(SQLのUPDATE)は、on: :update
という仕様になっているだけです。
Railsの場合コントローラのアクション名をたまたまcreate/updateにしている例が多いので、そのような勘違いが生まれやすかったりします。
投稿2020/09/18 13:18
編集2020/09/18 13:19総合スコア4207
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
試したことないですが on: :アクション名
をやって見る価値はあります
ですか
ですとそのアクションによるものだ、という情報をアクションがモデルにもたせて、それで if: することになります。
例えば modelに attr_accessor :アクション
アクションで model.アクション = true
としておいて、if: @アクション
ですね
投稿2020/09/18 12:06
編集2020/09/18 12:39総合スコア23567
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。