質問編集履歴
1
controllerを追加しました. これで足りますでしょうか?
title
CHANGED
File without changes
|
body
CHANGED
@@ -130,10 +130,94 @@
|
|
130
130
|
|
131
131
|
<% end %>
|
132
132
|
```
|
133
|
+
**app/controllers/users_controller.rb**
|
134
|
+
```
|
135
|
+
class UsersController < ApplicationController
|
136
|
+
before_action :logged_in_user, only: [:index, :edit, :update, :destroy]
|
137
|
+
before_action :correct_user, only: [:edit, :update]
|
138
|
+
before_action :admin_user, only: :destroy
|
133
139
|
|
140
|
+
def destroy
|
141
|
+
User.find(params[:id]).destroy
|
142
|
+
flash[:success] = "User deleted"
|
143
|
+
redirect_to users_url
|
144
|
+
end
|
134
145
|
|
146
|
+
def index
|
147
|
+
#@users = User.paginate(page: params[:page])
|
148
|
+
@users = User.where(activated: true).paginate(page: params[:page])
|
149
|
+
end
|
135
150
|
|
136
151
|
|
152
|
+
def show
|
153
|
+
@user = User.find_by(params[:id])
|
154
|
+
redirect_to root_url and return unless @user.activated?
|
155
|
+
@microposts = @user.microposts.paginate(page: params[:page])
|
156
|
+
end
|
157
|
+
|
158
|
+
def new
|
159
|
+
@user = User.new
|
160
|
+
end
|
161
|
+
|
162
|
+
def create
|
163
|
+
@user = User.new(user_params) # params[:user]実装は終わっていないことに注意!
|
164
|
+
#マスアサインメント脆弱性
|
165
|
+
if @user.save
|
166
|
+
@user.send_activation_email
|
167
|
+
flash[:info] = "Please check your email to activate your account."
|
168
|
+
redirect_to root_url
|
169
|
+
else
|
170
|
+
render 'new'
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
def edit
|
175
|
+
end
|
176
|
+
|
177
|
+
def update
|
178
|
+
if @user.update(user_params)
|
179
|
+
flash[:success] = "Profile updated"
|
180
|
+
redirect_to @user
|
181
|
+
#更新に成功した場合に扱う
|
182
|
+
else
|
183
|
+
render "edit"
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
private
|
188
|
+
|
189
|
+
def user_params
|
190
|
+
params.require(:user).permit(:name, :email, :password,
|
191
|
+
:password_confirmation)
|
192
|
+
end
|
193
|
+
|
194
|
+
# beforeアクション
|
195
|
+
|
196
|
+
# ログイン済みユーザーかどうか確認
|
197
|
+
def logged_in_user
|
198
|
+
unless logged_in?
|
199
|
+
store_location
|
200
|
+
flash[:danger] = "Please log in."
|
201
|
+
redirect_to login_url
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
# 正しいユーザーかどうか確認
|
206
|
+
def correct_user
|
207
|
+
@user = User.find(params[:id])
|
208
|
+
redirect_to(root_url) unless current_user?(@user)
|
209
|
+
end
|
210
|
+
|
211
|
+
#管理者かどうか確認
|
212
|
+
def admin_user
|
213
|
+
redirect_to(root_url) unless current_user.admin?
|
214
|
+
end
|
215
|
+
end
|
216
|
+
```
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
|
137
221
|
### 試したこと
|
138
222
|
|
139
223
|
errorではなく, failureなのが気になりtypoより,メソッドや変数がうまく機能していないのかと思いましたが,うまく自分では発見できませんでした.エラー文で検索して以下の方の記事を見つけましたが, いまいち発見がありませんでした. 一応載せておきます.
|