2012-03-17 41 views
2

我需要指導來理解在rails中編寫複雜查詢的邏輯。需要一些幫助來理解在rails中寫複雜查詢的想法活動記錄

我有三個型號

Business 

    has_many :customers 
    has_many :transactions 

Customer 
    has_many :transactions 
    belongs_to :business 

Transaction 
    belongs_to :businesss 
    belongs_to :customer 
//transaction model has a attribute amount which tells how much amount has been spent in this particular transaction. 

enter image description here

現在我需要實現過濾器這樣的。我張貼截圖的原因,這將很容易理解。

編輯

每一筆交易是指一遊。總花費是指總花費。

+0

什麼表保存有關客戶訪問數據?或者交易是否意味着訪問? – forker 2012-03-17 22:18:49

+0

@forker Yupp每筆交易都意味着一次訪問。 – 2012-03-17 22:24:27

回答

1

我懷疑是否有一個優雅的單一查詢解決方案來支持AR的功能。但即使有一個,爲了表現,您必須創建一個材料視圖或彙總表,以計算總體花費的排名值。因此,假如你有材料視圖total_spent_ranking(customer_id, rank)你可以做平常AR查詢:(只是一個草圖)

Customer.joins(:transaction, :total_spent_ranking).select('customer.id').group_by('customer.id').having('total_spent_ranking.rank > 15 and count(distinct transaction.id) > 10') 
+0

非常感謝。得到它了。完善.. – 2012-03-18 06:27:28