私のようなモデルメソッドがある場合:ようなビューブロックとモデル法やコントローラのインスタンス変数、ルビー3
def favoured_users
self.followers.limit(5).order("created_at")
end
:
<% 5.times do |i| %>
<li><%= @user.favoured_users[i].name %></li>
<% end %>
...私は呼び出すことになりますfavoured_userメソッドを5回、毎回5人のユーザーを求め、25人のユーザーが呼び出されるようにします。
@favoured_users = @user.followers.limit(5).order("created_at")
は、それがサーバーに少なく呼び出しを次のようになります。私は代わりに私のコントローラで変数にfavoured_usersの結果を置く必要がある場合
私は思ったんだけど?
** EDIT **
私は、これは値がキャッシュから来ている意味ならば、それは表示されます(CACHEのbcosが、私はそれが何を意味するのかthatsの知らない)わからないんだけど、私は明示的に、私は必ずそれがキャッシュあちこちに来るん作るために何かをしなければならないの、それを告げていない。
User Load (0.6ms) SELECT `users`.* FROM `users` INNER JOIN `relationships` ON `users`.`id` = `relationships`.`followed_id` WHERE `relationships`.`follower_id` = 1 ORDER BY full_name, created_at LIMIT 5
CACHE (0.0ms) SELECT `users`.* FROM `users` INNER JOIN `relationships` ON `users`.`id` = `relationships`.`followed_id` WHERE `relationships`.`follower_id` = 1 ORDER BY full_name, created_at LIMIT 5
CACHE (0.0ms) SELECT `users`.* FROM `users` INNER JOIN `relationships` ON `users`.`id` = `relationships`.`followed_id` WHERE `relationships`.`follower_id` = 1 ORDER BY full_name, created_at LIMIT 5
CACHE (0.0ms) SELECT `users`.* FROM `users` INNER JOIN `relationships` ON `users`.`id` = `relationships`.`followed_id` WHERE `relationships`.`follower_id` = 1 ORDER BY full_name, created_at LIMIT 5
CACHE (0.0ms) SELECT COUNT(*) FROM `users` INNER JOIN `relationships` ON `users`.`id` = `relationships`.`follower_id` WHERE `relationships`.`followed_id` = 1
User Load (0.5ms) SELECT `users`.* FROM `users` INNER JOIN `relationships` ON `users`.`id` = `relationships`.`follower_id` WHERE `relationships`.`followed_id` = 1 ORDER BY full_name, created_at LIMIT 5
CACHE (0.0ms) SELECT `users`.* FROM `users` INNER JOIN `relationships` ON `users`.`id` = `relationships`.`follower_id` WHERE `relationships`.`followed_id` = 1 ORDER BY full_name, created_at LIMIT 5
CACHE (0.0ms) SELECT `users`.* FROM `users` INNER JOIN `relationships` ON `users`.`id` = `relationships`.`follower_id` WHERE `relationships`.`followed_id` = 1 ORDER BY full_name, created_at LIMIT 5
CACHE (0.0ms) SELECT `users`.* FROM `users` INNER JOIN `relationships` ON `users`.`id` = `relationships`.`follower_id` WHERE `relationships`.`followed_id` = 1 ORDER BY full_name, created_at LIMIT 5
は、キャッシュからの復帰値はありますか?
<% @user.favoured_followers do %>
<li><%= @favoured.first.username unless @favoured.first.blank? %></li>
<li><%= @favoured.second.username unless @favoured.second.blank? %></li>
<li><%= @favoured.third.username unless @favoured.third.blank? %></li>
<li><%= @favoured.fourth.username unless @favoured.fourth.blank? %></li>
<li><%= @favoured.fifth.username unless @favoured.fifth.blank? %></li>
<% end %>
何も返されている:私は私のビューから変数にアクセスするかどうかはわかりません
EDITは、私がしようとしていますSEBIの編集あたり、私のビューのような方法がありますか?
のRailsを行いますあたりの冗長クエリをキャッシュしようとする試みを行います要求。それらの 'CACHE'メッセージは、データベースに再びヒットするのではなく、キャッシュから値を返したことを意味します。これは役に立ちますが、セビの答えのように明示的にキャッシングする価値は、Railsがあなたのために行うよりも優れています。 – Brandan
私は今Brandonに感謝します。 – Darcbar