我使用内存数据库进行测试。每次测试都会重新加载架构。
最近我的 rspec 抱怨找不到表。原因是作用域在加载时引用了另一个模型。
class Item
scope :public, where(:store_id => Store.public_store_ids())
class Store
def self.public_store_ids
self.public.pluck(:id)
问题是,在内存中加载项目模型的初始化过程中,尚未加载存储表的架构,但我的范围会尝试查询公共存储ID,从而导致“找不到表”错误.
如何使我的项目范围在运行时动态评估?我不想使用 join 因为它会减慢我的查询速度,但这是我唯一的方法吗?