我使用内存数据库进行测试。每次测试都会重新加载架构。
最近我的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,因为它会减慢我的查询速度,但这是我的唯一方法吗?
答案 0 :(得分:0)
我意识到我可以让它成为一个类方法,以便在运行时进行评估
def self.public
store_ids = BeautyStreet::Store.public_store_ids()
where(:store_id => store_ids)
end