質問編集履歴

8

具体例反映

2020/05/13 03:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  以下の内容を参考に実装しているのですが、現在のパスワードの入力は不要になりましたが、毎回パスワード変更を行わないと正しく更新されないようになってしまいます。
4
4
 
5
+ https://kossy-web-engineer.hatenablog.com/entry/2018/11/06/102047
6
+
5
7
 
6
8
 
7
9
  ![イメージ説明](d647a62461ae3af1db13452126c442ab.png)
@@ -118,15 +120,111 @@
118
120
 
119
121
  #user.rb
120
122
 
123
+
124
+
125
+ class User < ApplicationRecord
126
+
127
+ # Include default devise modules. Others available are:
128
+
129
+ # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
130
+
121
- devise :database_authenticatable, :registerable,
131
+ devise :database_authenticatable, :registerable,
122
132
 
123
133
  :recoverable, :rememberable, :validatable
124
134
 
125
135
 
126
136
 
127
-
137
+ validates :name,:useruserid, presence: true #追記
138
+
128
-
139
+ # @([a-zA-Z0-9_-])
140
+
141
+ mount_uploader :image, ImageUploader
142
+
143
+ validates :useruserid, presence: true, uniqueness: true, format: { with: /\A@[\w+\-.]+\z/i }
144
+
145
+ validates :email, presence: true, uniqueness: true, format: { with: /\A[\w+\-.]+@[a-z\d\-.]+.[a-z]+\z/i }
146
+
147
+ validates :password, presence: true, format: { with: /\A(?=.*?[a-z])(?=.*?\d)[a-z\d]{6,40}+\z/i }
148
+
149
+ # validates :profile, length: { maximum: 200 } #追記
150
+
151
+ has_many :comments
152
+
153
+ has_many :tweets, dependent: :destroy
154
+
155
+ has_many :likes, dependent: :destroy
156
+
157
+ has_many :liked_tweets, through: :likes, source: :tweet
158
+
159
+
160
+
161
+ has_many :following_relationships, foreign_key: "follower_id", class_name: "Relationship", dependent: :destroy
162
+
163
+
164
+
165
+ has_many :followings, through: :following_relationships
166
+
167
+
168
+
169
+ has_many :follower_relationships, foreign_key: "following_id", class_name: "Relationship", dependent: :destroy
170
+
171
+
172
+
173
+ has_many :followers, through: :follower_relationships
174
+
175
+
176
+
177
+ # has_many :temps
178
+
179
+
180
+
181
+ def following?(other_user)
182
+
183
+ following_relationships.find_by(following_id: other_user.id)
184
+
185
+ end
186
+
187
+
188
+
189
+ def follow!(other_user)
190
+
191
+ following_relationships.create!(following_id: other_user.id)
192
+
193
+ end
194
+
195
+
196
+
197
+ def unfollow!(other_user)
198
+
199
+ following_relationships.find_by(following_id: other_user.id).destroy
200
+
201
+ end
202
+
203
+
204
+
205
+ def already_liked?(tweet)
206
+
207
+ self.likes.exists?(tweet_id: tweet.id)
208
+
209
+ end
210
+
211
+ def self.search(search)
212
+
213
+ if search
214
+
215
+ User.where('name LIKE(?) or sex LIKE(?) ', "%#{search}%","%#{search}%")
216
+
217
+ else
218
+
219
+ User.all
220
+
221
+ end
222
+
223
+ end
224
+
225
+
226
+
129
- def update_without_current_password(params, *options)
227
+ def update_without_current_password(params, *options)
130
228
 
131
229
  params.delete(:current_password)
132
230
 
@@ -142,6 +240,8 @@
142
240
 
143
241
 
144
242
 
243
+ binding.pry
244
+
145
245
  result = update_attributes(params, *options)
146
246
 
147
247
  clean_up_passwords
@@ -152,6 +252,14 @@
152
252
 
153
253
 
154
254
 
255
+ end
256
+
257
+
258
+
259
+
260
+
261
+
262
+
155
263
 
156
264
 
157
265
  #routes.rb
@@ -392,6 +500,6 @@
392
500
 
393
501
  ```
394
502
 
395
- rails cを実行した結果
503
+ binding.pryを実行した結果
396
-
504
+
397
- ![イメージ説明](1d3643fed27fc367e76a963d1bf94b98.png)
505
+ ![イメージ説明](04d40addb566266590cfef07c0200103.png)

7

画像添付

2020/05/13 03:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -391,3 +391,7 @@
391
391
  上記のコードでエラーが起きました。
392
392
 
393
393
  ```
394
+
395
+ rails cを実行した結果
396
+
397
+ ![イメージ説明](1d3643fed27fc367e76a963d1bf94b98.png)

6

ファイル追加

2020/05/12 23:56

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -359,3 +359,35 @@
359
359
 
360
360
 
361
361
  ```
362
+
363
+
364
+
365
+ ```
366
+
367
+ #編集後(useruserid追加)
368
+
369
+ エラー画面
370
+
371
+
372
+
373
+ ↳ app/models/user.rb:60
374
+
375
+ User Exists (0.4ms) SELECT 1 AS one FROM `users` WHERE `users`.`useruserid` = BINARY '@aaaa' AND `users`.`id` != 1 LIMIT 1
376
+
377
+ ↳ app/models/user.rb:60
378
+
379
+ User Exists (0.4ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY 'aaa@gmail.com' AND `users`.`id` != 1 LIMIT 1
380
+
381
+ ↳ app/models/user.rb:60
382
+
383
+ (0.2ms) ROLLBACK
384
+
385
+ ↳ app/models/user.rb:60
386
+
387
+
388
+
389
+ result = update_attributes(params, *options)
390
+
391
+ 上記のコードでエラーが起きました。
392
+
393
+ ```

5

ファイル追加

2020/05/12 16:50

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -263,3 +263,99 @@
263
263
  ↳ app/models/user.rb:59
264
264
 
265
265
  ```
266
+
267
+ ```
268
+
269
+ #元々あったregistrations/edit.html.haml
270
+
271
+
272
+
273
+ <h2>Edit <%= resource_name.to_s.humanize %></h2>
274
+
275
+
276
+
277
+ <%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
278
+
279
+ <%= render "devise/shared/error_messages", resource: resource %>
280
+
281
+
282
+
283
+ <div class="field">
284
+
285
+ <%= f.label :email %><br />
286
+
287
+ <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
288
+
289
+ </div>
290
+
291
+
292
+
293
+ <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
294
+
295
+ <div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div>
296
+
297
+ <% end %>
298
+
299
+
300
+
301
+ <div class="field">
302
+
303
+ <%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
304
+
305
+ <%= f.password_field :password, autocomplete: "new-password" %>
306
+
307
+ <% if @minimum_password_length %>
308
+
309
+ <br />
310
+
311
+ <em><%= @minimum_password_length %> characters minimum</em>
312
+
313
+ <% end %>
314
+
315
+ </div>
316
+
317
+
318
+
319
+ <div class="field">
320
+
321
+ <%= f.label :password_confirmation %><br />
322
+
323
+ <%= f.password_field :password_confirmation, autocomplete: "new-password" %>
324
+
325
+ </div>
326
+
327
+
328
+
329
+ <div class="field">
330
+
331
+ <%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
332
+
333
+ <%= f.password_field :current_password, autocomplete: "current-password" %>
334
+
335
+ </div>
336
+
337
+
338
+
339
+ <div class="actions">
340
+
341
+ <%= f.submit "Update" %>
342
+
343
+ </div>
344
+
345
+ <% end %>
346
+
347
+
348
+
349
+ <h3>Cancel my account</h3>
350
+
351
+
352
+
353
+ <p>Unhappy? <%= button_to "Cancel my account", registration_path(resource_name), data: { confirm: "Are you sure?" }, method: :delete %></p>
354
+
355
+
356
+
357
+ <%= link_to "Back", :back %>
358
+
359
+
360
+
361
+ ```

4

文記載

2020/05/12 16:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -242,6 +242,8 @@
242
242
 
243
243
  #上記の部分でエラーが起きていました。
244
244
 
245
+ エラー文は以下のものになります。
246
+
245
247
  Unpermitted parameter: :useruserid
246
248
 
247
249
  (1.0ms) BEGIN

3

エラー情報更新

2020/05/12 11:32

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -227,3 +227,37 @@
227
227
  ```
228
228
 
229
229
  現在のパスワードは空でも更新できますが、パスワード変更なしの記事が見当たらなかったので質問させていただきました。原因特定できる記事もなかったためアドバイスまたは提案をお願いします
230
+
231
+
232
+
233
+ ```
234
+
235
+ result = update_attributes(params, *options)
236
+
237
+ clean_up_passwords
238
+
239
+ result
240
+
241
+
242
+
243
+ #上記の部分でエラーが起きていました。
244
+
245
+ Unpermitted parameter: :useruserid
246
+
247
+ (1.0ms) BEGIN
248
+
249
+ ↳ app/models/user.rb:59
250
+
251
+ User Exists (0.6ms) SELECT 1 AS one FROM `users` WHERE `users`.`useruserid` = BINARY '@aaa' AND `users`.`id` != 1 LIMIT 1
252
+
253
+ ↳ app/models/user.rb:59
254
+
255
+ User Exists (11.9ms) SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY 'aaa@gmail.com' AND `users`.`id` != 1 LIMIT 1
256
+
257
+ ↳ app/models/user.rb:59
258
+
259
+ (3.6ms) ROLLBACK
260
+
261
+ ↳ app/models/user.rb:59
262
+
263
+ ```

2

画像追加

2020/05/12 11:32

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  以下の内容を参考に実装しているのですが、現在のパスワードの入力は不要になりましたが、毎回パスワード変更を行わないと正しく更新されないようになってしまいます。
4
4
 
5
+
6
+
7
+ ![イメージ説明](d647a62461ae3af1db13452126c442ab.png)
8
+
9
+ 上記のようにパスワードの変更を行わないとエラーが起きてしまいます。
10
+
5
11
  https://kossy-web-engineer.hatenablog.com/entry/2018/11/06/102047
6
12
 
7
13
 

1

コントローラーの詳細記載

2020/05/12 10:34

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 【Rails】Devise アカウント編集 パスワードなし
1
+ 【Rails】Devise アカウント編集 パスワードなしで更新
test CHANGED
@@ -178,6 +178,46 @@
178
178
 
179
179
  end
180
180
 
181
+
182
+
183
+ #ApplicationController.rb
184
+
185
+ class ApplicationController < ActionController::Base
186
+
187
+ protect_from_forgery with: :exception
188
+
189
+ before_action :authenticate_user!
190
+
191
+ before_action :configure_permitted_parameters, if: :devise_controller?
192
+
193
+
194
+
195
+ protected
196
+
197
+
198
+
199
+ def configure_permitted_parameters
200
+
201
+ devise_parameter_sanitizer.permit(:sign_up, keys: [:name,:useruserid])
202
+
203
+ devise_parameter_sanitizer.permit(:account_update, keys: [:name, :profile,:image,:sex,:age,:tall])
204
+
205
+ end
206
+
207
+
208
+
209
+ def log_in(user)
210
+
211
+ session[:user_id] = user.id
212
+
213
+ end
214
+
215
+
216
+
217
+ end
218
+
219
+
220
+
181
221
  ```
182
222
 
183
- 現在のパスワードは空でも更新できますが、パスワード変更なしの記事が見当たらなかったので質問させていただきました。
223
+ 現在のパスワードは空でも更新できますが、パスワード変更なしの記事が見当たらなかったので質問させていただきました。原因特定できる記事もなかったためアドバイスまたは提案をお願いします