アソシエーションを組んでいるのですが、他テーブルの情報を取得しようとするとエラーになります
###実装したいこと
@tweet = Tweet.find_by(id: 1) <%= @tweet.school_a_id.name%> のように記述(間違っているかもしれません)して、そのツイートに紐づくcateforiesテーブルのnameを取得したい
###テーブル関係
同じモデルを参照する外部キーを2つ作成する必要があるので、[こちら]を参考にしてアソシエーションを組みました(https://blog.yayawatanabe.net/entry/2018/12/17/222107)
tweetモデル
belongs_to :school_a,class_name: 'Category', foreign_key: 'school_a_id' belongs_to :school_b,class_name: 'Category', foreign_key: 'school_b_id'
categoryモデル
has_many :tweets //has_ancestry has_many :school_a_tweets,class_name: 'Tweet', foreign_key: 'school_a_id' has_many :school_b_tweets,class_name: 'Tweet', foreign_key: 'school_b_id'
###テーブルの中身
tweetsテーブル
school_a_id、school_b_idは、categoriesテーブルのidと紐づけてあります
|id|text|school_a_id|school_b_id|
|:--|:--:|--:|
|1|おはよう|1|2|
categoriesテーブル
id | name |
---|---|
1 | 学校A |
2 | 学校B |
###エラー
ツイートid1に紐づくnameを取得しようと
<%= @tweet.school_a_id.name%>
としてますが、undefined method `name' for 2:Integer が発生してしまいます
学校Aや学校Bを取得するのには、どのような処理をすればいいのか、ご教授願いたいです
回答1件
あなたの回答
tips
プレビュー