質問編集履歴

3

自分で調べたことや試したことに関しての文を修正しました

2022/10/19 02:39

投稿

Tokage_oshi
Tokage_oshi

スコア1

test CHANGED
File without changes
test CHANGED
@@ -121,13 +121,13 @@
121
121
 
122
122
 
123
123
  **自分で調べたことや試したこと**
124
- 3つの記事にあった解決策を試みましたが、いずれも解決に至りませんでした。
124
+ 記事を3つ読んでそれぞれの解決策を試みましたが、いずれも解決に至りませんでした。
125
125
  1つ目: ルーティングをresource→resourcesに書き直す
126
- →書き直したが上記のエラーメッセージが変わらず表示されました。
126
+ →書き直しましたが上記のエラーメッセージが変わらず表示されました。
127
127
  https://qiita.com/kaichi_lvg/items/c5b8d594929ed8047966#%E6%8C%99%E5%8B%95%E7%A2%BA%E8%AA%8D
128
128
 
129
129
  2つ目: Item.find(params[:id])→Item.find(params[:item_id]) に修正
130
- →書き直したが上記のエラーメッセージが変わらず表示されました。
130
+ →書き直しましたが上記のエラーメッセージが変わらず表示されました。
131
131
  https://qiita.com/WI2rz/items/ae291c52af78ad0467f8
132
132
 
133
133
  解決策3:findではなくfind_by メソッドで書く

2

routes.rbを追記しました

2022/10/19 02:37

投稿

Tokage_oshi
Tokage_oshi

スコア1

test CHANGED
File without changes
test CHANGED
@@ -95,6 +95,31 @@
95
95
  end
96
96
  ```
97
97
 
98
+ ```routes.rb
99
+ Rails.application.routes.draw do
100
+ get 'relationships/followings'
101
+ get 'relationships/followers'
102
+ mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
103
+ get 'home/top'
104
+ devise_for :users
105
+ root to: "home#top"
106
+ get 'home/mypage'
107
+ get 'home/show/:id', :to => 'home#show'
108
+ resources :posts do #postsコントローラへのルーティング
109
+ resources :comments, only: [:create] #commentsコントローラへのルーティング
110
+ resource :likes, only: [:create, :destroy]
111
+ resource :bookmarks, only: [:create, :destroy]
112
+ end
113
+ # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
114
+ resources :users do
115
+ resources :relationships, only: [:create, :destroy]
116
+ get 'followings' => 'relationships#followings', as: 'followings'
117
+ get 'followers' => 'relationships#followers', as: 'followers'
118
+ end
119
+ end
120
+ ```
121
+
122
+
98
123
  **自分で調べたことや試したこと**
99
124
  3つの記事にあった解決策を試みましたが、いずれも解決に至りませんでした。
100
125
  1つ目: ルーティングをresource→resourcesに書き直す

1

userモデルを追記しました

2022/10/17 10:31

投稿

Tokage_oshi
Tokage_oshi

スコア1

test CHANGED
File without changes
test CHANGED
@@ -58,6 +58,43 @@
58
58
  エラー原因: @user = User.find(params[:user_id])
59
59
 
60
60
  ```
61
+
62
+ ```user.rb
63
+ class User < ApplicationRecord
64
+ # Include default devise modules. Others available are:
65
+ # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
66
+
67
+
68
+ devise :database_authenticatable, :registerable,
69
+ :recoverable, :rememberable, :validatable
70
+ has_many :posts, dependent: :destroy
71
+ has_many :comments
72
+ has_many :likes, dependent: :destroy
73
+ has_many :bookmarks, dependent: :destroy
74
+
75
+ # フォローをした、されたの関係
76
+ has_many :relationships, class_name: "Relationship", foreign_key: "follower_id", dependent: :destroy
77
+ has_many :reverse_of_relationships, class_name: "Relationship", foreign_key: "followed_id", dependent: :destroy
78
+
79
+ # 一覧画面で使う
80
+ has_many :followings, through: :relationships, source: :followed
81
+ has_many :followers, through: :reverse_of_relationships, source: :follower
82
+
83
+ # フォローしたときの処理
84
+ def follow(user_id)
85
+ relationships.create(followed_id: user_id)
86
+ end
87
+ # フォローを外すときの処理
88
+ def unfollow(user_id)
89
+ relationships.find_by(followed_id: user_id).destroy
90
+ end
91
+ # フォローしているか判定
92
+ def following?(user)
93
+ followings.include?(user)
94
+ end
95
+ end
96
+ ```
97
+
61
98
  **自分で調べたことや試したこと**
62
99
  3つの記事にあった解決策を試みましたが、いずれも解決に至りませんでした。
63
100
  1つ目: ルーティングをresource→resourcesに書き直す