環境
- Ruby 2.6.1
- Ruby on Rails 5.2.3
起こった事象
1対多の関連付けを行うために以下のようなコードを書いた。
user.rb
class User < ApplicationRecord
has_many :footprints, foreign_key: 'user_id', dependent: :destroy
end
footprint.rb
class Footprint < ApplicationRecord
belongs_to :users
end
この状態でfootprintモデルのcreateを行うと、以下のエラーが出る。
ActiveRecord::RecordInvalid (バリデーションに失敗しました: Usersを入力してください)
原因
belongs_toで指定するモデル名は単数形で指定しないといけなかったため、
footprintモデルと関連するモデルが存在しないことになっていた模様。
そのため、以下のように修正する必要がある。
footprint.rb
class Footprint < ApplicationRecord
belongs_to :user
end
マイグレーションファイルでは普通に複数形で書いていたので、
こちらも同じだろうと複数形で書いた結果、こうなってしまった。
単数形でなければいけないのか、複数形でなければいけないのか、
気をつけようと思う。