0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

1対多の関連付け時に失敗したこと

Posted at

環境

  • 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

マイグレーションファイルでは普通に複数形で書いていたので、
こちらも同じだろうと複数形で書いた結果、こうなってしまった。

単数形でなければいけないのか、複数形でなければいけないのか、
気をつけようと思う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?