2015-02-07 38 views
1

我想要放在一起的ActiveRecord查詢,將返回任何用戶ID在關聯的模型記錄更新在一個特定的範圍內。因此例如User has_many :searcheshas_many :lists。我想要做這樣的事情:如何獲得user_ids,其中任何關聯updated_at在一個範圍內?

user_ids = [1,2,3,4] 
search_users = Search.where(user_id: user_ids).where("updated_at > ?", 7.days.ago).pluck(:user_id) 
list_users = List.where(user_id: user_ids).where("updated_at > ?", 7.days.ago).pluck(:user_id) 
ids_i_care_about = (list_users + search_users).uniq 

所以跨多個模型,我需要的是在我的範圍內的updated_at任何型號的user_ids。 (時間範圍只需要至少滿足一個模型的updated_at)。我這樣做的約12個左右的模型,每個都有一個user_id。

在ActiveRecord中執行此操作的最佳方法是什麼?

回答

0

您可以使用search-logic寶石編寫這樣的查詢。

User.searches_updated_at_eq(start_date..end_date).lists_updated_at_eq(start_date..end_date).map(&:id) 

希望這回答了你的問題。

相關問題