

relationshipフォロー、フォロワー機能を記述してrails s しようとしたらサーバーが立ち上がらなくなりました。
どこかの引数が間違っているみたいなのですがどこを直して良いかわかりません。

[code]

    rails s
    => Booting Puma
    => Rails 6.1.7 application starting in development 
    => Run `bin/rails server --help` for more startup options
    Exiting
    /home/ec2-user/.rvm/gems/ruby-3.1.2/gems/activesupport-6.1.7/lib/active_support/core_ext/hash/keys.rb:52:in `block in assert_valid_keys': Unknown key: :souce. Valid keys are: :class_name, :anonymous_class, :primary_key, :foreign_key, :dependent, :validate, :inverse_of, :strict_loading, :autosave, :before_add, :after_add, :before_remove, :after_remove, :extend, :counter_cache, :join_table, :index_errors, :ensuring_owner_was, :through, :source, :source_type (ArgumentError)
    
[/code]

以下、該当していそうなコードです。初学者なので見づらい部分があると思いますが  
よろしくお願いします。

relationships.controller

[code]

    class RelationshipsController < ApplicationController
    
      def create
        @user = User.find(params[:user_id])
        current_user.follow(params[:user_id])
        redirect_to request.referer
      end
    
      def destroy
        current_user.unfollow(params[:user_id])
        redirect_to request.referer
      end
    
      
      def followings
        user = User.find(params[:user_id])
        @users = user.followings
      end
     
     def followers
       user = User.find(params[:user_id])
       @users = user.followers
     end
    end
    
[/code]

relationship.rb

[code]

    class Relationship < ApplicationRecord
      belongs_to :follower, class_name: "User"
      belongs_to :followed, class_name: "User"
    end
    
[/code]

user.rb

[code]

    has_many :relationships, class_name: "Relationship", foreign_key: 
      "follower_id", dependent: :destroy
    has_many :reverse_of_relationships, class_name: "Relationship", 
      foreign_key: "followed_id", dependent: :destroy
    has_many :followings, through: :relationships, souce: :followed
      has_many:followers,through::reverse_of_relationships,souce::follower
    
    def follow(user_id)
      relationships.create(followed_id: user_id)
      end
    
      def unfollow(user_id)
      relationships.find_by(followed_id: user_id).destroy
      end
      
      def following?(user)
      followings.include?(user)
      end
    end
    
[/code]

routes.rb

[code]

     resources :users do
        resource :relationships, only: [:create, :destroy]
        get 'folloeings' => 'relationships#followings', as: 'followings'
        get 'followers' => 'relationships#followers' , as: 'followers'
      end
    
[/code]

migration file

[code]

    class CreateRelationships < ActiveRecord::Migration[6.1]
      def change
        create_table :relationships do |t|
          t.integer :follower_id
          t.integer :followed_id
          t.timestamps
        end
      end
    end
    
[/code]


CC BY-SA 4.0
2023-05-28T08:41:05.087
94997
2023-05-28T11:24:18.860
2023-05-28T11:09:37.420
7347
58086
question
ruby-on-rails
フォロー機能を実装しようとしたらrails sできない


まずはエラーメッセージをよく読んでください。`Unknown key: :souce.`と書かれていますね。その後の`Valid keys are:
...`に妥当なキーの一覧がありますが、`:souce`はありません。なので、そんなキーは知らないと言うことでエラーになったと言うことです。妥当なキーには`:source`があるので、スペルミスだと思われます。

ということで、ソースコード全体から`souce`と書いているところを検索してください。質問に上げたコードには含まれてないようです。ここで注意が一つですが、`:souce`ではなく`souce`と`:`無しで検索してください。文字列やメソッド名になっている事もあるからです。見つけたら`source`と修正してみてください。これでたぶん、なおると思います。

* * *

エラーには何が間違っているかのヒントが書いています。まずは意味を理解して(英語を読んで)、ヒントになりそうな名称(メッソド名とか、クラスメイトか、シンボルとか)を検索するなど、だいたい解決できるものです。


CC BY-SA 4.0
2023-05-28T11:24:18.860
94999
2023-05-28T11:24:18.860
7347
94997
answer