My app has devise authentication for every user. I integrated fragment
caching for one of my views which is accessible only on sign-in.
The cached page saved by one user is accessible by another user. How can
I
implement a unique key based caching so that cached pages are unique for
every user?
I read about some caching methods below but not sure how to
create/retrieve
a unique cached page.
My app has devise authentication for every user. I integrated fragment
caching for one of my views which is accessible only on sign-in.
The cached page saved by one user is accessible by another user. How can I
implement a unique key based caching so that cached pages are unique for
every user?
Thanks Colin for your reply. Can you please let me know how can user_id
be
included in caching key string? I have following implementation of
caching
as of now.
app/views/employee/index.html.erb
<% cache "employee_list "do %>
List of all employees:
<% Employee.all.each do |e| %>
<%= link_to e.name, employee_url(e) %>
<% end %>
<% end %>
app/sweepers/employee_sweeper.rb
class EmployeeSweeper < ActionController::Caching::Sweeper
observe Employee
def sweep(employee)
expire_fragment(“employee_list”)
end
alias_method :after_create, :sweep
alias_method :after_update, :sweep
alias_method :after_destroy,:sweep
end
Devise “current_user” is accessible in all the above files.
Thanks Colin for your reply. Can you please let me know how can user_id be
included in caching key string? I have following implementation of caching
as of now.
app/views/employee/index.html.erb
<% cache "employee_list "do %>
Something like
cache “employee_list #{current_user.id}” do
so the user id is included in cache key. Similarly for expire.
Colin
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.