teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2020/03/05 03:32

投稿

rhiroe
rhiroe

スコア2352

answer CHANGED
@@ -5,16 +5,10 @@
5
5
  DBをいくら更新しても、変数に入っている値は変わらないので、
6
6
  変数の中身を更新するために使われます。
7
7
 
8
- ```rb
9
- def create
10
- @like = Like.create(user_id: current_user.id, post_id: params[:post_id])
11
- @likes = Like.where(post_id: params[:post_id])
12
- # 例えば、ここで @post.likes としも↑作成したLikeレコードは含れない
8
+ ~~ここにサンプルを書いいましたが誤りでしたので消しした。~~
13
- @post.reload
14
- # DBからデータを取得し直すことで @post.likes とした時↑で作成したLikeレコードが含まれる
15
- end
16
- ```
17
9
 
10
+ `@post.likes`とした時点でSQLは再発行されるので、ここで`reload`する意味を感じませんが、`reload`自体の機能は上記の通りです。
11
+
18
12
  > redirect_toとの違いについても教えていただけると幸いです。
19
13
 
20
14
  比較するまでもなく全くの別物です。何もかもが違います。

1

追記

2020/03/05 03:32

投稿

rhiroe
rhiroe

スコア2352

answer CHANGED
@@ -1,6 +1,7 @@
1
1
  > reloadはどのように機能しているのですか。
2
2
 
3
3
  `@post`のデータをDBから再度取得しています。
4
+ やってることは `@post = @post.class.find(@post.id)` と同じです。
4
5
  DBをいくら更新しても、変数に入っている値は変わらないので、
5
6
  変数の中身を更新するために使われます。
6
7