実現したいこと
Railsのアプリケーション開発をしている者です。ログインしているuserのidを利用して、以下のfriend_infoテーブル内にあるnameのフィールドを一覧出力したいと思っています。
[userテーブル]
id
[friendテーブル]
id
user_id
[friend_infoテーブル]
id
friend_id
name
sex
birthday
※userテーブル→friendテーブル→friend_infoテーブルの順で従属関係は成り立っています。
※userテーブル、friendテーブル、friend_infoテーブルにはあらかじめテストデータが入っています。
やったこと
ruby
1//動く 2 def index 3 friends = Friend.find_by(user_id: current_user.id) 4 @friends = friends.friend_info.all 5 end
上記のコードは動きます。画面上にデータが1件だけ表示されました。しかし今回は、「『user_id=ログインユーザー』に合致するfriend_infoテーブル内にあるnameのフィールドを複数件、画面に一覧出力したい」ので、find_byではなく、where句を使いたいです。
しかし、
ruby
1//動かない 2 def index 3 friends = Friend.where(user_id: current_user.id) 4 @friends = friends.friend_info.all 5 end
これだと、二行目のfriendsがNoMethodErrorになります。しかし、friends変数をコンソールで調べたら、値はしっかり入っていました。
どうして想定どおり動かないのか分からなくなってしまったので、ご教授願いたいと考えています。よろしくお願いいたします。
追記:各種テーブルの関連部分
friendの定義部分
belongs_to :user
has_many :friend_infos, dependent: :destroy
validates :user_id, presence: true
friend_infoの定義部分
belongs_to :friend
Userの定義部分
has_many :friends, dependent: :destroy
回答1件
あなたの回答
tips
プレビュー