ユーザーフォロー2
ユーザーフォロー
やった事詳細
user.followingsで「そのユーザーがフォローしているユーザーたち」が取得できるようにする
モデルの関連付けをしてDBからデータを取得しようとすると永遠とこのエラーが出てしまう。
DB関連のメソッドいくつかで出るのでDBの関係性がうまく出来ていなさそう
テーブルをRails チュートリアルと同じ名前にして先程と同じ事をしたらエラーが出なかった。。
なぜなのか?Followテーブルだと単数形や複数形がうまくいかないのか?
- 理解した内容
フォロー一覧画面のURLはusers/:user_id/followingsとなるようにする
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.erb
とapp/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 関連の部分を読み込まなくては!