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

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

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

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

Q&A

解決済

1回答

287閲覧

Ruby on rails フォロー・アンフォロー機能

taktokyo1

総合スコア25

Ruby on Rails

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

0グッド

1クリップ

投稿2019/03/31 01:37

前提・実現したいこと

Twitterクローンの作成をしております。
フォローおよびアンフォロー機能を作成し、試しにコンソールにて下記フォローの指示をしたところ、エラーが出てつまずいてしまいました。
お知恵を拝借できますと大変助かります。

User.all # 存在するUserの確認
user1 = User.find(1) # followするUserの取得
user2 = User.find(2) # followされるUserの取得

発生している問題・エラーメッセージ

Traceback (most recent call last): 11: from bin/rails:9:in `<main>' 10: from bin/rails:9:in `require' 9: from /home/ec2-user/.rvm/gems/ruby-2.6.0/gems/railties-5.0.7.2/lib/rails/commands.rb:18:in `<top (required)>' 8: from /home/ec2-user/.rvm/gems/ruby-2.6.0/gems/railties-5.0.7.2/lib/rails/commands/commands_tasks.rb:49:in `run_command!' 7: from /home/ec2-user/.rvm/gems/ruby-2.6.0/gems/railties-5.0.7.2/lib/rails/commands/commands_tasks.rb:78:in `console' 6: from /home/ec2-user/.rvm/gems/ruby-2.6.0/gems/railties-5.0.7.2/lib/rails/commands/console_helper.rb:9:in `start' 5: from /home/ec2-user/.rvm/gems/ruby-2.6.0/gems/railties-5.0.7.2/lib/rails/commands/console.rb:65:in `start' 4: from (irb):12 3: from (irb):12:in `rescue in irb_binding' 2: from /home/ec2-user/environment/microposts/app/models/user.rb:17:in `follow' 1: from /home/ec2-user/.rvm/gems/ruby-2.6.0/gems/activemodel-5.0.7.2/lib/active_model/attribute_methods.rb:433:in `method_missing' NoMethodError (undefined method `relationships' for #<User:0x00000000040f0ce0>)

該当のソースコード

【relationship.rb】 class Relationship < ApplicationRecord belongs_to :user belongs_to :follow, class_name: 'User' end 【user.rb】 class User < ApplicationRecord before_save { self.email.downcase! } validates :name, presence: true, length: { maximum: 50 } validates :email, presence: true, length: { maximum: 255 }, format: { with: /\A[\w+\-.]+@[a-z\d\-.]+.[a-z]+\z/i }, uniqueness: { case_sensitive: false } has_secure_password has_many :microposts has_many :relationships has_many :followings, through: :relationships, source: :follow has_many :reverses_of_relationship, class_name: 'Relationship', foreign_key: 'follow_id' has_many :followers, through: :reverses_of_relationship, source: :user def follow(other_user) unless self == other_user self.relationships.find_or_create_by(follow_id: other_user.id) end end def unfollow(other_user) relationship = self.relationships.find_by(follow_id: other_user.id) relationship.destroy if relationship end def following?(other_user) self.followings.include?(other_user) end end

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

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

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

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

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

bamboo-nova

2019/03/31 05:16

何を実行したらエラーになっているのかよくわからないのですが、user1.follow(user2)などでエラーが発生しているのでしょうか。
taktokyo1

2019/03/31 11:07

有難う御座います。 ご認識の通り、コンソール上でフォロー処理をしようとしたところ、エラーが出てきてしまいます。 宜しくお願い致します。
guest

回答1

0

ベストアンサー

undefined method `relationships' for #<User:0x00000000040f0ce0>)

Userインスタンスにはrelationshipsメソッドが未定義だと言われています。

user.rbが保存されているか確認し、rais cを再起動してください。
モデルを書き換えた場合は再起動が必要です。

投稿2019/04/05 02:43

ykp_yk

総合スコア654

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

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

taktokyo1

2019/04/09 20:55

戴いたコメントの通りでした。再起動によって解決致しました。 大変助かりました、有難う御座います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問