2

このシステムがデータをキャッシュしているかどうかはよくわかりませんが、キャッシュの特徴がいくつかあります。

基本的に、私は Rails 3.2.4 をいじっていて、システムが結果の一部を表示しなくなりました。これは私がコードモデルに入れたデフォルトのスコープによるものだと思いますが、それでもこれは 10 分の 9 ではなくすべての結果を表示するはずです。その記録。sqlite3 データベースをチェックして、データがそこに配置されているかどうかを確認し、すべての接続情報をチェックして、キャッシュがオフになっていることを確認します。ただし、モデル ファイルまたはコントローラー ファイルを変更して保存すると、データが表示されます。touchコマンドだけでうまくいくコードを変更することすらありません。スコープと関係があると思いますが、完全にはわかりません。私が見つけた解決策の 1 つは、Rails 3.2.2 に戻ることです。うまくいくようです。

開発.rb

  # Show full error reports and disable caching
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false 

house.rb

class House < ActiveRecord::Base
  attr_accessible :name

  default_scope :order => 'created_at DESC', :limit => 50
  validates_presence_of :name
  has_many :roomies
end

schema.rb

ActiveRecord::Schema.define(:version => 20120601204050) do
  create_table "houses", :force => true do |t|
    t.string   "name"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end
end

house_controller.rb

class HousesController < ApplicationController
  def index
    @houses = House.all
  end

  def new
    @house = House.new
  end

  def show
    @house = House.find(params[:id])
  end

  def create
    @house = House.new(params[:house])

    if @house.save
      flash[:success] = "Your house has been created and is ready to have people added to it."
      redirect_to houses_path
    else
      flash[:error] = "Your house could not be added dew to a error!"
      render :action => :new
    end
  end
end

家/index.html.erb

<%= debug @houses %>

あなたが見ることができるように、超クレイジーなものは何もありません。

4

1 に答える 1

3

Rails 3.2.4 には、スコープに対して行われた呼び出しの意図しないキャッシュに関するリグレッションがありました。代わりに、このコミットを含む rails 3.2.5 を試してください。

于 2012-06-02T02:18:19.713 に答える