2009-11-22 2 views
0

나는 사용자가 항목을 작성하는 것을 다루는 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'필드가 있습니다. true는 수입이 수입이고 false는 수입이 비용임을 의미합니다. 내가보기에 표시 할 찾고 있어요

all_incomes_with_tag(tag) - all_expenses_with_tag(tag) 

정보는 다음과 같습니다 : 태그 이름, 관련 항목 및 총 가격의 수 그래서, 태그의 총 실제로, 사이비 코드입니다. 가장 큰 비용 표와 가장 큰 소득표에 대해이 정보를 보여 드리고자합니다.

충분한 정보를 제공해주기를 바랍니다. 어떤 도움이라도, 올바른 방향으로 향하는 것조차도 매우 높이 평가할 것입니다!


좀 진전 한

UPDATE. 여기에 내 현재 컨트롤러의 : 나에게 다음과 같은 출력 제공

<% @tag_groups.sort_by { |tag| tag[:total_price] }.each do |tag| %> 
    <p><%= tag[:tag_name] %> &mdash; <%= 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) 

내 기분을 ...

여기

@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 

하고 나의보기입니다

답변

0

문제의 플러그인에 익숙하지 않습니다. 그러나 @tag_groups가 필요한 속성에 액세스하기 위해 사용하는 콜렉션이라면 현재 수행중인 모든 작업이 #sum ('price') 값으로 전송됩니다.

보기에서 액세스하려는 모든 데이터가 컬렉션에 있는지 확인해야합니다.

해시 {}는 키 : 값 쌍이므로 항상 좋지만 배열을 색인하려면 괜찮습니다.