Q&A
解決済
4回答
765閲覧
総合スコア65
Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。
Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。
0グッド
0クリップ
投稿2020/09/18 10:34
0
createやupdateは、『on: :update』とか付与することでバリデーションを選べますが、自分が作ったアクション名にバリデーションをかける場合の方法はあるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
質問へのコメント
回答4件
自己解決
これでいけました。
on: :return_ref
@return_list.save(context: :return_ref)
投稿2020/09/25 02:26
validates :column, 条件, on: :hogeのようにバリデーションをかければ、それをチェックしたい箇所でmodel.valid?(:hoge)とすることで、当該のバリデーションを特定のタイミングで稼働することができます(Rails Guide)。
validates :column, 条件, on: :hoge
model.valid?(:hoge)
投稿2020/09/18 13:30
総合スコア147001
無理です。その発想が間違いです。 そもそもモデルのバリデーションのon: :xxxはアクション名ではありません。
on: :xxx
モデルの新規登録(SQLのINSERT)は、on: :createで、 更新(SQLのUPDATE)は、on: :updateという仕様になっているだけです。
on: :create
on: :update
Railsの場合コントローラのアクション名をたまたまcreate/updateにしている例が多いので、そのような勘違いが生まれやすかったりします。
投稿2020/09/18 13:18
総合スコア4322
回答へのコメント
2020/09/18 13:29
試したことないですが on: :アクション名 をやって見る価値はあります
on: :アクション名
ですか ですとそのアクションによるものだ、という情報をアクションがモデルにもたせて、それで if: することになります。 例えば modelに attr_accessor :アクション アクションで model.アクション = true としておいて、if: @アクション ですね
attr_accessor :アクション
model.アクション = true
if: @アクション
投稿2020/09/18 12:06
総合スコア23685
2020/09/18 12:29
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
自分で作成したコントローラーのアクションでのバリデーション