Tag: Rails/オブザーバー

目次

関連ページ

参考情報

基本

Rails::Observersの基本

Active Record Observer

  • 未使用なので省略。

Action Controller Sweeper

  • コントローラーで保存や更新実行時にキャッシュをクリアしたいときに使う。
  • まずActionController::Caching::Sweeperを継承したSweeperクラスを作成する。
    class ListSweeper < ActionController::Caching::Sweeper
      observe List, Item #監視したいモデル(この場合、List、Itemモデルが保存された後処理が走る)
    
      def after_save(record)
        list = record.is_a?(List) ? record : record.list
        expire_page(controller: "lists", action: %w( show public feed ), id: list.id)
        expire_action(controller: "lists", action: "all")
        list.shares.each { |share| expire_page(controller: "lists", action: "show", id: share.url_key) }
      end
    end
    
  • コントローラーに設定する。
    class ListsController < ApplicationController
      caches_action :index, :show, :public, :feed
      cache_sweeper :list_sweeper, only: [ :edit, :destroy, :share ]
    end
    
  • index、show、public、feedはキャッシュされ、edit、destroy、shareが呼ばれた場合キャッシュがクリアされる。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-05-08 (月) 13:46:28