テストにはメモリ内データベースを使用します。スキーマはすべてのテストで再読み込みされます。
最近、私の rspec は、テーブルが見つからないと文句を言います。その理由は、ロード時にスコープが別のモデルを参照しているためです。
class Item
scope :public, where(:store_id => Store.public_store_ids())
class Store
def self.public_store_ids
self.public.pluck(:id)
問題は、アイテム モデルがメモリにロードされたときの初期化中に、ストア テーブルのスキーマがまだロードされていないことですが、私のスコープはパブリック ストア ID をクエリしようとするため、「テーブルが見つかりません」というエラーが発生します。 .
実行時に動的に評価するアイテム スコープを作成するにはどうすればよいですか? クエリが遅くなる可能性があるため、結合を使用したくなかったのですが、それが唯一の方法でしょうか?