質問編集履歴
8
具体例反映
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
|
-
r
|
503
|
+
binding.pryを実行した結果
|
396
|
-
|
504
|
+
|
397
|
-
![イメージ説明](
|
505
|
+
![イメージ説明](04d40addb566266590cfef07c0200103.png)
|
7
画像添付
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
ファイル追加
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
ファイル追加
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
文記載
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
エラー情報更新
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
画像追加
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
コントローラーの詳細記載
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
|
+
現在のパスワードは空でも更新できますが、パスワード変更なしの記事が見当たらなかったので質問させていただきました。原因特定できる記事もなかったためアドバイスまたは提案をお願いします
|