Кэширование фрагментов на основе идентификатора сессии - PullRequest
0 голосов
/ 18 февраля 2019

Я ищу способ использования кеша фрагментов в определенных формах (новое действие) на основе идентификатора сеанса в ruby ​​на рельсах.Срок действия этих форм истекает при уничтожении сеанса или любых изменениях записей, используемых в этих формах.

Проблема: Эти изменения содержимого формы основаны на типе пользователя, например, определенные поля отображаются для определенных типов пользователей.Когда я кеширую форму, она показывает ту же форму для всех типов входа пользователя.

New.html.erb

<% cache 'procedure_form_cache', skip_digest: true do %>
    <div class="container">
        <hr>
        <h3>Procedure</h3>
        <%= render 'form', procedure: @procedure %>
    </div>
<%end%>

Practice.rb

class Procedure < ApplicationRecord
  def expire_cache             
         ActionController::Base.new.expire_fragment('procedure_form_cache')
  end
end

Я ожидаю, что кэш фрагмента основан на идентификаторе сеанса в формах

1 Ответ

0 голосов
/ 18 февраля 2019
<% cache [session.id, @procedure.updated_at] do %>
    <div class="container">
        <hr>
        <h3>Procedure</h3>
        <%= render 'form', procedure: @procedure %>
    </div>
<%end%>

должен сделать трюк, кеш будет обновляться, если идентификатор сеанса изменится или изменится на @procedure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...