質問編集履歴

5

画像修正

2020/06/29 14:17

投稿

fork_
fork_

スコア43

test CHANGED
File without changes
test CHANGED
@@ -14,9 +14,7 @@
14
14
 
15
15
 
16
16
 
17
-
18
-
19
- ![イメージ説明](fb43f2d751ae65ed879ab551e4855a7e.png)
17
+ ![イメージ説明](faf71bf28adc58eee9dcfef6aac97ac7.png)
20
18
 
21
19
  ```:ruby
22
20
 

4

画像軽微修正

2020/06/29 14:17

投稿

fork_
fork_

スコア43

test CHANGED
File without changes
test CHANGED
@@ -16,9 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- ![イメージ説明](7ca58dffd8c0d86b2fe3609bae9e9d37.png)
19
+ ![イメージ説明](fb43f2d751ae65ed879ab551e4855a7e.png)
20
-
21
-
22
20
 
23
21
  ```:ruby
24
22
 

3

画像修正しました

2020/06/29 14:14

投稿

fork_
fork_

スコア43

test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- ![イメージ説明](ec7a4f108462b4f3735e2d100b7376ab.png)
19
+ ![イメージ説明](7ca58dffd8c0d86b2fe3609bae9e9d37.png)
20
20
 
21
21
 
22
22
 

2

モデルを追加しました。

2020/06/29 14:11

投稿

fork_
fork_

スコア43

test CHANGED
File without changes
test CHANGED
@@ -21,6 +21,8 @@
21
21
 
22
22
 
23
23
  ```:ruby
24
+
25
+ #Userモデル
24
26
 
25
27
  class User < ApplicationRecord
26
28
 
@@ -53,6 +55,54 @@
53
55
  ```
54
56
 
55
57
 
58
+
59
+ ```
60
+
61
+ #Favoriteモデル
62
+
63
+ class Favorite < ApplicationRecord
64
+
65
+ belongs_to :user
66
+
67
+ belongs_to :recipe
68
+
69
+
70
+
71
+ validates_uniqueness_of :recipe_id, scope: :user_id
72
+
73
+ end
74
+
75
+
76
+
77
+ ```
78
+
79
+
80
+
81
+ ```
82
+
83
+ #レシピモデル
84
+
85
+ class Recipe < ApplicationRecord
86
+
87
+ belongs_to :user
88
+
89
+ has_many :favorites, dependent: :destroy
90
+
91
+
92
+
93
+ with_options presence: true do
94
+
95
+ validates :title
96
+
97
+ validates :body
98
+
99
+ end
100
+
101
+ end
102
+
103
+
104
+
105
+ ```
56
106
 
57
107
 
58
108
 

1

補足点追加しました

2020/06/29 13:57

投稿

fork_
fork_

スコア43

test CHANGED
File without changes
test CHANGED
@@ -51,3 +51,55 @@
51
51
 
52
52
 
53
53
  ```
54
+
55
+
56
+
57
+
58
+
59
+ ```
60
+
61
+ <h1>recipe#index</h1>
62
+
63
+ <p>Find me in app/views/recipe/index.html.erb</p>
64
+
65
+
66
+
67
+ <% @recipes.each do |recipe| %>
68
+
69
+ <%= recipe.user.name %>
70
+
71
+ <%= recipe.title %>
72
+
73
+ <%= recipe.body %>
74
+
75
+
76
+
77
+
78
+
79
+ <% if Favorite.find_by(user_id: current_user.id, recipe_id: recipe.id) %>
80
+
81
+ <%= link_to "いいねを外す", recipe_favorites_path(recipe), method: :delete %>
82
+
83
+ <% else %>
84
+
85
+ <%= link_to "いいね", recipe_favorites_path(recipe), method: :post %>
86
+
87
+ <% end %>
88
+
89
+ <%= recipe.favorites.count %>
90
+
91
+ <% end %>
92
+
93
+ ```
94
+
95
+
96
+
97
+
98
+
99
+ ==============================================
100
+
101
+ 補足ですが、<% if current_user.already_favorited?(recipe) %>メソッドを使用せずに、view側で<% if Favorite.find_by(user_id: current_user.id, recipe_id: recipe.id) %>としても同じ挙動になりました。
102
+
103
+ この書き方の方が個人的にしっくりくるのですが、これは正しい書き方なのでしょうか。
104
+
105
+ Favoriteモデルの中に、ログインしているユーザーのIDと、レシピIDが入っていたら「いいね」をしているとみなす。そうでなかったら「いいね」を表示させる、という認識です。