2012-03-24 42 views
0

我一直在嘗試所有不同的方式來組合查詢,但我沒有任何運氣。它要麼返回一個或另一個取決於我先放哪個查詢。我需要它,以便它將for_group_with_account的所有條目和for_task_with_account的所有條目製作一個列表。這不是我想結合的條件,而是他們每個人的結果相結合。希望這是有道理的。關於合併AR查詢的問題

這裏的範圍在我的門票模式:

scope :for_group_with_account, lambda { |account| joins(:group => :accounts).where("accounts.id = ?", account.id) } 
    scope :for_task_with_account, lambda { |account| joins(:tasks => :account).where("accounts.id = ?", account.id) } 
    scope :for_account, lambda { |account| for_task_with_account(account).merge(for_group_with_account(account)) } 

在過去的範圍,我結合示波器我也試過:

scope :for_account, lambda { |account| for_task_with_account(account) + for_group_with_account(account) } 
    scope :for_account, lambda { |account| for_task_with_account(account) & for_group_with_account(account) } 
    scope :for_account, lambda { |account| for_task_with_account(account) && for_group_with_account(account) } 

不過這些都不是真正取兩個列表和組合它們。非常非常令人沮喪。有什麼我做錯了嗎?

謝謝。

回答

0
scope :for_account, lambda { |account| for_task_with_account(account).for_group_with_account(account) } 
+0

沒有。這最終給我的結果只有'for_group_with_account(account)'這是其他一些示波器正在做的事情。 – Marc 2012-03-25 01:55:14

+0

範圍只能被鏈接,也許你想要簡單的類方法? – MikDiet 2012-03-25 07:58:23