0

我使用内存数据库进行测试。每次测试都会重新加载架构。

最近我的 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 因为它会减慢我的查询速度,但这是我唯一的方法吗?

4

1 回答 1

0

我意识到我可以将其设为类方法,以便在运行时对其进行评估

def self.public
  store_ids = BeautyStreet::Store.public_store_ids()
  where(:store_id => store_ids)
end
于 2012-12-20T03:54:00.107 回答