0
관리자가 새 사용자를 만들 수있는 양식이 있습니다.이 양식에는 remote: true
이 있습니다. 사용자가 성공적으로 생성되면 모든 사용자를 표시하는 페이지의 섹션이 업데이트됩니다. 내가 캐싱이 설정했기 때문에 이것은 ... 생산에서 발생되지레일 : 캐시 스위퍼 및 유효 기간이 만료 된 조각
create.js.erb :
<% if @user.valid? %>
<% type = (@user.type == "Athlete" ? "athletes" : "high_school_coaches") %>
alert("<%= @user.email %> created!");
$('form#new_user').find('input:not(:hidden, :submit)').val('');
$('.<%= type %>-container').html("<%= j render \"school_admin/#{type}/all\", users: @users.in_groups_of(3, false) %>")
<% else %>
alert("<%= @user.errors.full_messages.to_sentence %>");
<% end %>
UserSweeper가 : 생산 $('.<%= type %>-container').html("<%= j render \"school_admin/#{type}/all\", users: @users.in_groups_of(3, false) %>")
에서
class UserSweeper < ActionController::Caching::Sweeper
observe Athlete, HighSchoolCoach
def after_create(record)
expire_cache(record)
end
def after_update(record)
expire_cache(record)
end
def expire_cache(record)
type = record.is_a?(HighSchoolCoach) ? "coach" : "athlete"
expire_fragment("all_school_admin_#{type.pluralize}")
end
end
이 작동하지 않습니다
I 때문에 보기에 다음과 같은 캐시 조각이 있어야합니다.<% cache('all_school_admin_athletes') do %>
<% users.each do |row_users| %>
<div class="row">
<% row_users.each do |user| %>
<%= render user %>
<% end %>
</div>
<% end %>
<% end %>
Application.rb
config.autoload_paths += %W(
#{config.root}
#{config.root}/lib
#{config.root}/app/models
#{config.root}/app/models/concerns
#{config.root}/app/sweepers
)
# Activate observers that should always be running.
config.active_record.observers = :user_sweeper
누구든지이 문제가 발생합니까?
cache_sweeper :user_sweeper, only: [:create]