質問編集履歴

1

質問内容がしっかり書かれていなかったため修正しました。

2020/09/13 03:47

投稿

Takashi1019
Takashi1019

スコア4

test CHANGED
File without changes
test CHANGED
@@ -24,17 +24,161 @@
24
24
 
25
25
  ```routes
26
26
 
27
- コード
27
+ get 'users/:id' =>"users#show"
28
+
29
+
30
+
31
+ post 'relationship/:id/unfollow' => 'relationships#unfollow',as: 'unfollow'
32
+
33
+ post 'relationship/:id/follow' => 'relationships#follow', as: 'follow'
28
34
 
29
35
  ```
30
36
 
31
37
 
32
38
 
33
- ### 試したこと
39
+ ```userrb
40
+
41
+ class User < ApplicationRecord
42
+
43
+ validates :password, {presence: true, length: {minimum: 8}, uniqueness: true}
44
+
45
+ validates :user_name, {presence: true}
46
+
47
+ validates :email, {presence: true}
34
48
 
35
49
 
36
50
 
51
+ has_many :follow, class_name:"Relationship", foreign_key:"follow_id"
52
+
53
+ has_many :follower, class_name:"Relationship", foreign_key:"follower_id"
54
+
55
+
56
+
57
+ has_many :following_user, through: :follow, source: :follower
58
+
59
+ has_many :follower_user, through: :follower, source: :follow
60
+
61
+
62
+
63
+ def follow(user_id)
64
+
65
+ follow.create(follower_id: user_id)
66
+
67
+ end
68
+
69
+
70
+
71
+
72
+
73
+ def unfollow(user_id)
74
+
75
+ follow.find_by(follower_id: user_id).destroy
76
+
77
+ end
78
+
79
+
80
+
81
+
82
+
83
+ def following?(user)
84
+
85
+ following_user.include?(user)
86
+
87
+ end
88
+
89
+ end
90
+
91
+ ```
92
+
93
+
94
+
95
+ ```relationshiprb
96
+
97
+ class Relationship < ApplicationRecord
98
+
99
+ belongs_to :follow, class_name: "User"
100
+
101
+ belongs_to :follower, class_name: "User"
102
+
103
+ end
104
+
105
+ ```
106
+
107
+
108
+
109
+ ```userscontroller
110
+
111
+ def show
112
+
113
+ @user =User.find_by(id: params[:id])
114
+
115
+ end
116
+
117
+ ```
118
+
119
+
120
+
37
- ここに問題に対して試したことを記載してください。
121
+ ```relationshipscontroller
122
+
123
+ class RelationshipsController < ApplicationController
124
+
125
+
126
+
127
+ def follow
128
+
129
+ @user=User.find_by(id: params[:id])
130
+
131
+ @current_user.follow(params[:id])
132
+
133
+ reidirect_to("/user/#{@user.id}")
134
+
135
+ end
136
+
137
+
138
+
139
+ end
140
+
141
+ ```
142
+
143
+
144
+
145
+ ```showhtml
146
+
147
+ <% if @user.id == @current_user.id %>
148
+
149
+ <%= link_to("/users/#{@user.id}/edit") do %>
150
+
151
+ <div class="update-wrapper">プロフィールを編集する</div>
152
+
153
+ <% end %>
154
+
155
+ <% elssif @current_user.following?(@user)%>
156
+
157
+ <%= link_to(unfollow_path(@user.id), {method: "post"}) do %>
158
+
159
+ <div class="update-wrapper">フォロー中</div>
160
+
161
+ <% end %>
162
+
163
+ <% else %>
164
+
165
+ <%= link_to(follow_path(@user.id), {method: "post"}) do %>
166
+
167
+ <div class="update-wrapper">フォローする</div>
168
+
169
+ <% end %>
170
+
171
+ <% end %>
172
+
173
+ ```
174
+
175
+ 変数はrelationshipscontrollerの```@current_user.follow(params[:id])```のparams[:id]として渡せていると思っていたのですが何が間違えているのか自分ではわかりません。申し訳ありませんが皆さんの力をお貸しいただければと思います。
176
+
177
+ よろしくお願いします。
178
+
179
+ ### 試したこと
180
+
181
+ 他の方の記事も参考にrelationshipモデルのカラムを変更したりいろいろ試しましたが自分でもあまり理解できず、理解できそうな上記の方の記事を頑張って参考に作成してみようと思いました。
38
182
 
39
183
 
40
184
 
@@ -42,4 +186,6 @@
42
186
 
43
187
 
44
188
 
189
+ rails5を用いています。
190
+
45
- ここによ詳細な情報てください。
191
+ りな情報がありましたら追いたます