Метод кэшированного контроллера?

Я пытаюсь внести некоторые изменения в метод show в контроллере событий и заметил, что изменения не имеют значения. Я закомментировал строку @event = Event.find_by_slug(params[:slug]), и представление show все еще работает и не выдает ошибку! Я даже удалил весь метод показа, и он все еще работает. Некоторое время я думал, что работаю над копией приложения, но оно определенно правильное.

У меня никогда не было этой проблемы раньше, но недавно я обновил свою версию Rails с 3.2.0 до 3.2.13. Интересно, есть ли где-то настройка кеширования, которая вызывает это? Кто-нибудь испытывал подобное или получил какие-либо указатели на то, где искать настройки конфигурации кэширования, возможно?

РЕДАКТИРОВАТЬ - Код добавлен

  def show
   @event = Event.find_by_slug(params[:slug])
   @meta_title = "#{@event.headline} at #{@event.venue.name}, #{@event.venue.town} - #{@event.event_date.to_date.to_formatted_s(:my_format)}"
   @meta_description = "#{@event.info.to_s.truncate(380, :separator => " ")}"
   @facebook_image = "#{@event.event_image.url(:large)}"
    respond_to do |format|
      format.html # show.html.erb
      format.json { render :json => @event }
    end
  end

Представление довольно большое, но я бы назвал поля, используя что-то вроде этого:

<h2><%= @event.headline %> TEST</h2>

"TEST" - это то, что я только что добавил, чтобы увидеть, будет ли это визуализировано, и это так, поэтому я определенно редактирую правильную версию приложения.

РЕДАКТИРОВАТЬ - Новая разработка в поиске этой ошибки

После долгих поисков дурацких действий и т. Д. Я постепенно начал пытаться вручную найти причину. Сначала создадим новую модель и посмотрим, произошло ли то же самое поведение, но не произошло. Затем, глядя на то, что отличалось, сверху вниз в моем контроллере событий, я начал комментировать строки / действия, а затем тестировать поведение. Во всяком случае, комментируя load_and_authorize_resource который я использую для вызова гема CanCan, и именно благодаря его модели способностей мое приложение ведет себя так, как и должно, теперь, очевидно, без моего кода на основе ролей.

Кто-нибудь может подумать, почему CanCan может быть причиной этого?

1 ответ

Решение

CanCan есть оба load_resource, authorize_resource а также load_and_authorize_resource, Все они делают то, что говорят, поэтому в вашем примере будет load_resource установить @event переменная экземпляра @event = Event.find(params[:id]), authorize_resource просто позвонит authorize! @event перед каждым действием. load_and_authorize_resource сначала загрузит ресурс, а затем авторизуется, как и раньше.

Вот еще один пример из документации CanCan на github:

class ArticlesController < ApplicationController
  load_and_authorize_resource

  def show
    # @article is already loaded and authorized
  end
end
Другие вопросы по тегам