我有一個Rails 4應用程序,其中一個用戶擁有一個Sales_Opportunity,並且每個Sales_Opportunity可以有一個「pipeline_status」,它當前以enum的形式實現。這工作正常,但現在我試圖創建一個用戶顯示,以圖形方式顯示每個pipeline_status(一系列從「前景」到「closed_won」的v形圖),我想顯示徽章在每個V形圖上顯示每個pipeline_status中用戶擁有的機會數量。如何使用rails 4集合並通過枚舉確定對象計數?
我想在rails中使用count方法,並在某些條件下傳遞 - 但是這雖然告訴我用戶有多少個Sales_Opportunities(總計),但它不會接受條件參數並根據我通過的枚舉。任何人都可以幫助或指向我的資源,可以幫助我學習正確的方式來使用它嗎?
Sales_Opportunity.rb:
class SalesOpportunity < ActiveRecord::Base
default_scope { order('close_date ASC') }
belongs_to :user
belongs_to :company
has_many :timeline_events, dependent: :destroy
has_many :swots, dependent: :destroy
validates :close_date, presence: true
validates :user_id, presence: true
validates :company_id, presence: true
validates :opportunity_name, presence: true
enum pipeline_status: [ :prospect, :qualifying, :demonstrating, :negotiating, :closed_won, :closed_lost, :dormant ]
end
我現在試圖表明這些在 「用戶儀表板」:
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<div id="chevrons">
<ul>
<li><a href="#1">Prospect
<span class="badge"><%= @user.sales_opportunities.count(:conditions => ":pipeline_status == 0") %></span>
</a></li>
<li><a href="#2">Qualifying
<span class="badge"><%= @user.sales_opportunities.count(:conditions => ":pipeline_status == 1") %></span>
</a></li>
<li><a href="#3">Demonstrating
<span class="badge"><%= @user.sales_opportunities.count(:conditions => ":pipeline_status == 2") %></span>
</a></li>
<li><a href="#4">Negotiating
<span class="badge"><%= @user.sales_opportunities.count(:conditions => ":pipeline_status == 3") %></span>
</a></li>
<li><a href="#5">Closed
<span class="badge", id="won"><%= @user.sales_opportunities.count(:conditions => ":pipeline_status == 4") %></span>
<span class="badge", id="lost"><%= @user.sales_opportunities.count(:conditions => ":pipeline_status == 5") %></span>
</a></li>
<li id="dormant"><a href="#1">Dormant
<span class="badge"><%= @user.sales_opportunities.count(:conditions => ":pipeline_status == 6") %></span>
</a></li>
</ul>
</div>
</div>
編輯:爲清楚起見,該頁面的目前的結果是顯示每個徽章的頭號。我只給了這個用戶一個sales_opportunity(枚舉:「展望」),它應該爲「Prospect」V形徽章註冊「1」,其他所有V形徽章註冊爲「0」,以符合我的期望。
我想知道我是否可能需要在Sales_Opportunity代碼或輔助方法內將此邏輯作爲單獨的方法調用提取出來,但認爲必須通過某種方式使其基於標準Rails計數功能。任何幫助將不勝感激。
真棒 - 感謝您的幫助。爲什麼他們沒有更新文檔以反映這一點? (可能是因爲很多文檔仍然是關於Rails 3的?) – Zoinks10 2014-11-05 00:26:51
[docs](http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-count)已更新。 – infused 2014-11-05 00:35:21
嗯,我有想法使用:我昨天在閱讀的文檔中的條件。我想這會讓我更加警惕我正在從哪個版本的文檔中獲益。感謝您幫助我發現我的錯誤,我非常感謝。 – Zoinks10 2014-11-05 01:02:07