これは非常に私と一緒にクマ複雑な例ですがスコープその後、再シードします。いくつかの場所でトリガを使用しているため、rake db:RAILS_ENV = testをマイグレートしてテストデータベースを適切に移行する必要がありました。エラー(名前付き)を持つクラスをキャッシュ
私のテスト環境でconfig.cache_classes = trueを有効にするまでは問題ありません。空のデータベース上でレーキの移行が実行されたとき、テーブルがどのように存在しないかについてのエラーが発生します。
scope :find_by_route_and_date, lambda { |route_id, date|
{
:conditions=>{:route_id=>route_id, :schedule_date=>date}
}
}
、スコープがラムダであり、それが評価取得されるべきではなく:--traceでこれを実行すると、私はそれが基本的なスコープを宣言するときにその私のオブジェクトのいずれかに爆破することを見つけますcache_classesを削除すると、移行は正常に動作します。だから私には、モデルがキャッシュされているように思えます。テーブルがまだ存在しないために範囲を絞ってしまい、移行を開始することができません。
私は迷っていますか?他に誰もこれを見た?私のデータベースを拭く必要がある場合は、キャッシングをオフにしてからマイグレートし、再度オンにする必要がありますか?
のRails 3.2、ルビー1.9.2、熊手UPDATED 0.9.2.2
:
を要求したように、ここでのスタックトレースは次のとおりです。https://gist.github.com/1705064
order.rb:179であります私の最初のスコープが定義されている場所と、上記にリストアップされた場所が爆発する場所。
スタックトレースは何ですか? – phoet
要点にトレースへのリンクを含めるように編集しました –
'order_controller.rb'がスタックに入っているのがちょっと奇妙です。実際にスコープを呼び出すレイクタスクでいくつかクレイジーなことをしていないことを確認してください。 – phoet