Ruby on Railsに関する質問です。趣味でプログラミングを始めたばかりのもので、質問内容が支離滅裂かもしれませんが、どなたかアドバイスをいただけますと幸いです。よろしくお願いいたします。
実現したいこと
親モデルの特定のカラムに保存された内容に応じて、子モデルに適用されるバリデーションが変更されるようにしたいと考えています。なお、親モデルと子モデルの作成はそれぞれ別個に行われるという前提です。
知りたいこと
①親モデルの特定のカラムについて、親モデルをcreateする時のみ設定可能とし、モデルの作成後の編集が不可能になるように設定する方法はあるのでしょうか(例えば、以下の'course'カラムの内容はUserモデルをcreateするときのみ設定可能とし、updateは不可、どうしても編集したければ当該モデルをdestroyして新しいUserモデルとして作り直さなければいけない、という風にしたい)。
②親モデルの特定のカラムの内容に応じて、子モデルに適用されるバリデーションの内容を変更することは可能なのでしょうか。例えば、以下の親の'course'がhogeの場合は子の'summary'の長さの上限を200に、親の'course'がfugaの場合は子の'summary'の長さの上限を300に設定する、といった風にです。
Userモデル(親)とEvaluationモデル(子)
Ruby
1class User < ApplicationRecord 2 has_many :evaluations, dependent: :destroy 3 validates :name, presence: true 4 validates :course, presence: true 5end 6 7class Evaluation < ApplicationRecord 8 belongs_to :user 9 validates :user_id, presence: true 10 validates :title, presence: true 11 validates :summary, presence: true, length: { maximum: 100 } 12 . 13 . 14 . 15end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/17 06:34