回答編集履歴
4
不要なコードも含めて回答を見直し修正しました。
test
CHANGED
@@ -20,13 +20,13 @@
|
|
20
20
|
|
21
21
|
- @user = User.find_by(email: params[:email])
|
22
22
|
|
23
|
-
+ @user = User.find_or_initialize_by(email: params[:email])
|
23
|
+
+ @user = User.find_or_initialize_by(email: user_params[:email])
|
24
24
|
|
25
25
|
|
26
26
|
|
27
27
|
- if @user && @user.authenticate(params[:password])
|
28
28
|
|
29
|
-
+ if @user.persisted? && @user.authenticate(params[:password])
|
29
|
+
+ if @user.persisted? && @user.authenticate(user_params[:password])
|
30
30
|
|
31
31
|
session[:user_id] = @user.id
|
32
32
|
|
@@ -36,11 +36,11 @@
|
|
36
36
|
|
37
37
|
else
|
38
38
|
|
39
|
-
|
39
|
+
- @error_message = "メールアドレスかパスワードが違います"
|
40
40
|
|
41
|
-
|
41
|
+
- @email = params[:email]
|
42
42
|
|
43
|
-
|
43
|
+
- @password = params[:password]
|
44
44
|
|
45
45
|
render("users/login_form")
|
46
46
|
|
@@ -56,6 +56,6 @@
|
|
56
56
|
|
57
57
|
```erb
|
58
58
|
|
59
|
-
<%= form_for @user, url:
|
59
|
+
<%= form_for @user, url: login_path do |f| %>
|
60
60
|
|
61
61
|
```
|
3
修正
test
CHANGED
@@ -24,7 +24,9 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
|
27
|
+
- if @user && @user.authenticate(params[:password])
|
28
|
+
|
29
|
+
+ if @user.persisted? && @user.authenticate(params[:password])
|
28
30
|
|
29
31
|
session[:user_id] = @user.id
|
30
32
|
|
2
修正
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
他の回答者さんもおっしゃっていますが、`find_by`だと`nil`を返す可能性があるので、必ず`User`インスタンスを返すようにしましょう。
|
2
|
+
|
3
|
+
|
2
4
|
|
3
5
|
```diff
|
4
6
|
|
@@ -9,6 +11,8 @@
|
|
9
11
|
end
|
10
12
|
|
11
13
|
```
|
14
|
+
|
15
|
+
|
12
16
|
|
13
17
|
```diff
|
14
18
|
|
1
追記
test
CHANGED
@@ -1,4 +1,14 @@
|
|
1
1
|
他の回答者さんもおっしゃっていますが、`find_by`だと`nil`を返す可能性があるので、必ず`User`インスタンスを返すようにしましょう。
|
2
|
+
|
3
|
+
```diff
|
4
|
+
|
5
|
+
def login_form
|
6
|
+
|
7
|
+
+ @user = User.new
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
```
|
2
12
|
|
3
13
|
```diff
|
4
14
|
|