ActiveRecord::InvalidForeignKey が raiseしてくれない


## 仕様

  * students(生徒)
  * subjects(科目)
  * students_subjects(中間テーブル) 
    * student_id
    * subject_id

students_subjectsはmigrationファイルで外部キー制約をかけています。

## 問題

外部キー制約が働いてるかチェックしたいなーと思って、以下のように実行し`ActiveRecord::InvalidForeignKey`がraiseすることを期待したんですが、  
期待と違う結果になりました。

[code]

    student.students_subjects.create!(subject_id: 'dummy')
    # ActiveRecord::RecordInvalid:  Subjectを入力してください
    
[/code]

ちなみにidなのに文字列なのが問題なのかと思って実際存在しないidでやっても同じでした。

[code]

    student.students_subjects.create!(subject_id: 999)
    # ActiveRecord::RecordInvalid:  Subjectを入力してください
    
[/code]

rails公式をみても、insertのときも発生するってあるのでおかしいなと感じています。  
<https://api.rubyonrails.org/v6.1.0/classes/ActiveRecord/InvalidForeignKey.html>

何か原因、手がかり等わかりそうな方はアドバイスいただけますと幸いでございます。




現在は下記のようになっているかと思います。  
この場合自動的にstudent_id(存在するstudentのid)が必須になるため  
`ActiveRecord::RecordInvalid` が発生します。

[code]

    class StudentsSubject
      belongs_to :student
    end
    
[/code]

以下のようにすればstudent_idは必須でなくなるので`ActiveRecord::InvalidForeignKey`
をraiseさせることができます。

[code]

    belongs_to :student, optional: true
    
[/code]

