我正在處理用戶創建條目的RoR應用程序。這些條目具有價格,表示作爲收入或費用的條目的布爾值,以及通過acts_as_taggable_on
插件標籤。用戶act_as_taggers
,所以我可以將所有權應用於標籤。當前用戶總數標籤
我正在嘗試查找具有最高總和(收入條目 - 費用條目)的用戶標籤以及總額最低的標籤。
現在我能找到該用戶已創建的所有標籤:
@all_tags = current_user.owned_tags
我就能夠去通過每個用戶的條目,標籤由標籤,並創建陣列的價格爲每個標籤的款項:
@tag_groups = Array.new
for tag in @all_tags
entries_tagged_with_tag = current_user.entries.tagged_with(tag)
@tag_groups << entries_tagged_with_tag.sum('price')
end
這讓我總結出的價格爲每個標籤,但後來我失去了一個與該款項有關的標記名稱。
但是,這裏有一個相當大的問題:一個條目價格本身並不意味着條目是收入還是支出。每個條目都有一個'is_income'字段;真正的意思是入場是收入,而虛假意味着入場是一種開銷。因此,總的標籤其實是僞代碼:
all_incomes_with_tag(tag) - all_expenses_with_tag(tag)
的信息我期待在我看來,以顯示爲:標籤名稱,相關條目,和總價數。我想爲最大費用標籤和最大收入標籤顯示此信息。
我希望我已經提供了足夠的信息。任何幫助,即使只是朝着正確的方向,將不勝感激!
UPDATE
我已經取得了一些進展。這是我目前的控制器:
@all_tags = current_user.owned_tags
@tag_groups = Array.new
for tag in @all_tags
income_entries_tagged_with_tag = current_user.entries.tagged_with(tag, :conditions => ['is_income = ?', true])
expense_entries_tagged_with_tag = current_user.entries.tagged_with(tag, :conditions => ['is_income = ?', false])
all_entries_tagged_with_tag = current_user.entries.tagged_with(tag)
tag_total_income = income_entries_tagged_with_tag.sum('price')
tag_total_expense = expense_entries_tagged_with_tag.sum('price')
tag_total = tag_total_income - tag_total_expense
@tag_groups << { :total_price => tag_total, :tag_name => tag.name, :number_of_entries => all_entries_tagged_with_tag.count }
end
這是我的觀點:
<% @tag_groups.sort_by { |tag| tag[:total_price] }.each do |tag| %>
<p><%= tag[:tag_name] %> — <%= number_to_currency(tag[:total_price]) %> (<%= tag[:number_of_entries] %>)</p>
<% end %>
這給了我下面的輸出:
food — $-32.50 (1)
lunch — $-32.50 (1)
coffee — $-32.50 (1)
business — $-32.50 (1)
development — $930.00 (1)
groceries — $930.00 (1)
babies — $930.00 (1)
second tag — $933.45 (1)
first tag — $933.45 (1)
personal — $1,022.00 (2)
我覺得我幾乎沒有...