質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

680閲覧

railsチュートリアル 第14章 follow,unfollow,following?メソッドについて

_on_my_manaita

総合スコア5

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/11/29 07:45

railsチュートリアルのフォロー機能のメソッドについて質問です.
follow(other_user)のfollowing<<other_userはなぜactive_relationships<<other_userではいけないのでしょうか?
逆にunfollow(other_user)はなぜfollowing.find_by(followed_id: other_user.id).destroyではいけないのでしょうか?
ちゃんと理解できていないのか,どちらでもよくないのか?と思ってしまいます.
###質問したいコード
###user.rb

# ユーザーをフォローする def follow(other_user) following << other_user end # ユーザーをフォロー解除する def unfollow(other_user) active_relationships.find_by(followed_id: other_user.id).destroy end # 現在のユーザーがフォローしてたらtrueを返す def following?(other_user) following.include?(other_user) end

イメージ説明
###user.rb

has_many :active_relationships, class_name: "Relationship", foreign_key: "follower_id", dependent: :destroy has_many :following, through: :active_relationships, source: :followed

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

follow(other_user)のfollowing<<other_userはなぜactive_relationships<<other_userではいけないのでしょうか?

これは成立しません。active_relationshipsの要素はRelationshipであって、Userではありません。

unfollow(other_user)はなぜfollowing.find_by(followed_id: other_user.id).destroyではいけないのでしょうか?

ユーザーごと削除したいなら、後者の書き方で問題ありませんが、やりたいことはそれではないですよね?

投稿2020/11/29 14:04

maisumakun

総合スコア145201

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問