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 1 year has passed since last update.

Railsで中間テーブルを使ってできること

Posted at
through association 'Osusume#novels' which goes through 'Osusume#osusume_novels' before the through association is defined.

上記のエラーが出たんだけど、osusumeレコードから、osusume_novelsの中間テーブルを介してnovelsを取得するrubyのコードを教えて。


以下、chatGPTの返答

このエラーは、アソシエーションの定義順序が間違っていることを示しています。has_many :throughで中間テーブルを介して関連付けをする場合は、中間テーブルの定義よりも前に関連付けの定義を行う必要があります。

以下は、OsusumeモデルとNovelモデルの正しい関連付けの順序を示した例です。

class Osusume < ApplicationRecord
  has_many :osusume_novels
  has_many :novels, through: :osusume_novels
end

class OsusumeNovel < ApplicationRecord
  belongs_to :osusume
  belongs_to :novel
end

class Novel < ApplicationRecord
  has_many :osusume_novels
  has_many :osusumes, through: :osusume_novels
end

このように定義すると、以下のようにして、osusumeレコードからnovelsを取得することができます。

@osusume = Osusume.find(id) # idはおすすめのIDに置き換える
@novels = @osusume.novels

このコードでは、osusumeレコードを検索して@osusumeに代入し、@osusume.novelsを使用してosusume_novels中間テーブルを介して関連する小説を@novelsに代入しています。

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?