2012-12-20 11 views
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,這將導致「表未找到」錯誤。

如何讓我的項目範圍在運行時動態評估?我不想使用連接,因爲它會減慢我的查詢速度,但這是否是我唯一的方法?

回答

0

我意識到,我可以只讓一個類的方法,因此在運行時評估

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