実現したいこと
中間テーブルの値のバリデーションのテストがしたい
該当のソースコード
require 'test_helper' class TeacherTest < ActiveSupport::TestCase def setup @teacher = Teacher.new(name: "Example Teacher", programming_ids: 1) end test "should be valid" do assert @teacher.valid? end end
class Teacher < ApplicationRecord has_many :teachers_programmings, foreign_key: 'teacher_id', dependent: :destroy has_many :programmings, through: :teachers_programmings, dependent: :destroy accepts_nested_attributes_for :programmings validates :name, presence: true, length: { maximum: 16} ,uniqueness: true validates :teachers_programmings, presence: true end
class TeachersProgramming < ApplicationRecord belongs_to :teacher, optional: true belongs_to :programming, optional: true end
発生している問題・エラーメッセージ
おそらく中間テーブルのバリデーションは成功しているが、setupでうまくprogramming_idを渡せていないため、setupでエラーが出てしまっている。
rails test TeacherTest#test_should_be_valid: ActiveRecord::RecordNotFound: Couldn't find Programming with 'id'=[1] test/models/teacher_test.rb:28:in `setup'
分からないところ
どのように記述したらsetupでエラーを出さないで済むか。rails consoleでTeacher.new(name: "Example Teacher",programming_ids: 1)をすると問題なくsaveできた。質問がわかりにくいかもしれませんが、どうか回答のほどよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/22 08:07
2020/01/22 08:12