ユーザーフォロー2

ユーザーフォロー

やった事詳細

user.followingsで「そのユーザーがフォローしているユーザーたち」が取得できるようにする

モデルの関連付けをしてDBからデータを取得しようとすると永遠とこのエラーが出てしまう。
DB関連のメソッドいくつかで出るのでDBの関係性がうまく出来ていなさそう

Pasted Graphic 1.png

テーブルをRails チュートリアルと同じ名前にして先程と同じ事をしたらエラーが出なかった。。
なぜなのか?Followテーブルだと単数形や複数形がうまくいかないのか?

  • 理解した内容

Pasted Graphic 3.png

フォロー一覧画面のURLはusers/:user_id/followingsとなるようにする

Rails のルーティング - Railsガイド

2.7 ネストしたリソース

config/routes.rb

resources :users do
  resources :follow
end

でルーティングを作れると思ったが、この場合followコントローラーを作成してfollow#createなどする必要がある様。

2.10.1 メンバールーティングを追加する

config/routes.rb

resources :users do
  member do
    get :following, :followers
  end
end

この方法であれば、GETリクエストとそれに伴う/users/1/followingを認識し、リクエストをusersコントローラのfollowingアクションにルーティングし、リソースid値をparams[:id]に渡せる様。

これで下記ルーティングが出来た。

following_user GET    /users/:id/following(.:format)     users#following
followers_user GET    /users/:id/followers(.:format)     users#followers

この状態でapp/views/users/following.html.erbapp/views/users/followers.html.erbを作成。
適当な文字を書いてみたら表示されたので、ルーティングはOK!
あとはapp/controllers/users_controller.rbでフォローしている人の情報を取得して、viewを作り込む!

フォロー、アンフォローのルーティング

config/routes.rb

resources :follow_relationships, only: [:create, :destroy]

で下記ルーティングが出来てフォロー、アンフォローする時のアクションを作れる

follow_relationships POST   /follow_relationships(.:format)      follow_relationships#create
follow_relationship DELETE /follow_relationships/:id(.:format)      follow_relationships#destroy

あとはDBのデータをどう取得するか
Active Record の基礎 - Railsガイド
railsガイドのActive Record 関連の部分を読み込まなくては!

ユーザーフォローがわからなすぎてrailsチュートリアル丸写しになっている。