アプリで Rails 4 キャッシュ ダイジェストを使用しようとしていますが、多くのアプリケーション ロジックに干渉していることに気付きました。たとえば、このコードでは、コードの周囲にキャッシュがある場合、current_user の ID が一致する場所でのみ表示されるはずのリンクが@user.id
正しく機能していません。これらのリンクは、ページを表示するすべてのユーザーに表示されます。
<% cache @languages do %>
<% for language in @languages%>
<tr>
<td><%= language.name %> </td>
<% if current_user && current_user.id == @user.id %>
<td><%= link_to "edit", {:controller => 'lawyer_profiles', :action =>'show', :language_id =>"#{language.id}"}, {:class => "editarea #{language.id}"}%></td>
<td><%= link_to "destroy", language, :confirm => 'Are you sure?', :method => :delete %></td>
<% end %>
</tr>
<% end %>
<% end %>
このコードでは、キャッシュが @question インスタンス変数に干渉していました。たとえば、キャッシュが存在するため、「回答を追加」へのリンクをクリックすると、回答するはずだった @question とは異なる @question に回答してしまいました。既にナビゲートしたページの変数。
<% cache @answers do %>
<% if @answers.empty? %>
<div class="row">
<h5>This question hasn't been answered yet: <% if can? :create, @answer %>
<% if current_user && !current_user.answers.map(&:question_id).include?(@question.id) %>
<%= link_to "Add an answer", new_question_answer_path(@question) %>
<% end %>
<% end %> </h5>
....some code not included
キャッシュがこのようなロジックに干渉しないようにするにはどうすればよいですか?