私はExamというモードを持っています。自分の他の列を空白にしないでRails列を検証する方法は?
いくつかの列がexames
にあります。です
class Exam < ApplicationRecord
validates :title, presence: true
validates :subject_id, presence: true, if: :no_exam_type?
def no_exam_type?
self.exam_type == ""
end
end
は私が試験を作成したい、と言って::
:title
:subject_id
:exam_type
が、私はこれを実装する方法を知りたい
Exam.create(title: "first exam", exam_type: "something")
subject_id
は、 exam_type
が空白の場合、そのようなexam_type=""
として、存在しないかだけの操作を行います。
Exam.create(title: "first exam", subject_id: 3)
exam_type
はデフォルトブランク値を持っているので。
しかし、exam_type
がexam_type="something"
のように空白でない場合、subject_id
は必須ではありません。
Exam.create(title: "first exam", exam_type: "something", subject_id: 3)
私はそれをテストしますが、幸運なことはありません。
どうすればよいですか?ありがとう、感謝します。
申し訳ありませんが、機能しません。 railsコンソールから 'Exam.create!(title:" title test "、exam_type:" test ")'を実行すると、 'ActiveRecord :: RecordInvalid:'というエラーがあります。 – floox