范围静态引用另一个模型结果表未找到

时间:2012-12-20 03:38:45

标签: ruby-on-rails-3 named-scope spork

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

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

1 个答案:

答案 0 :(得分:0)

我意识到我可以让它成为一个类方法,以便在运行时进行评估

def self.public
  store_ids = BeautyStreet::Store.public_store_ids()
  where(:store_id => store_ids)
end