質問編集履歴

1

app/model/user.rb ファイルの中身の追加

2020/04/18 05:46

投稿

jasonwick
jasonwick

スコア12

test CHANGED
File without changes
test CHANGED
@@ -13,3 +13,87 @@
13
13
  ブラウザの方でもログアウトを試みたところ以下のようなエラーが発生し、forgetメソッドに原因があると考えていますが、解決策を提案頂けると幸いです。
14
14
 
15
15
  ![イメージ説明](98a5422e2889b44c58bf9d3ed9ebb3b3.jpeg)
16
+
17
+
18
+
19
+ ### 追記 app/model/user.rb ファイルの中身
20
+
21
+
22
+
23
+ ```ここに言語を入力
24
+
25
+ class User < ApplicationRecord
26
+
27
+ attr_accessor :remember_token
28
+
29
+ before_save { self.email = email.downcase }
30
+
31
+ validates :name, presence: true, length: { maximum: 50 }
32
+
33
+ VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(.[a-z\d\-]+)*.[a-z]+\z/i
34
+
35
+ validates :email, presence: true, length: { maximum: 255 },
36
+
37
+ format: { with: VALID_EMAIL_REGEX },
38
+
39
+ uniqueness: { case_sensitive: false }
40
+
41
+ has_secure_password
42
+
43
+ validates :password, presence: true, length: { minimum: 6 }
44
+
45
+
46
+
47
+ # 渡された文字列のハッシュ値を返す
48
+
49
+ def User.digest(string)
50
+
51
+ cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
52
+
53
+ BCrypt::Engine.cost
54
+
55
+ BCrypt::Password.create(string, cost: cost)
56
+
57
+ end
58
+
59
+
60
+
61
+ # ランダムなトークンを返す
62
+
63
+ def User.new_token
64
+
65
+ SecureRandom.urlsafe_base64
66
+
67
+ end
68
+
69
+
70
+
71
+ # 永続セッションのためにユーザーをデータベースに記憶する
72
+
73
+ def remember
74
+
75
+ self.remember_token = User.new_token
76
+
77
+ update_attribute(:remember_digest, User.digest(remember_token))
78
+
79
+ end
80
+
81
+
82
+
83
+ # 渡されたトークンがダイジェストと一致したらtrueを返す
84
+
85
+ def authenticated?(remember_token)
86
+
87
+ return false if remember_digest.nil?
88
+
89
+ BCrypt::Password.new(remember_digest).is_password?(remember_token)
90
+
91
+ end
92
+
93
+
94
+
95
+
96
+
97
+ end
98
+
99
+ ```