2012-01-13 62 views
0

我的Rails應用程序中有兩個模型,用戶和調用。 模型關聯設置如下:Rails 3.1協會和計數?

用戶模型

has_many :calls 

呼叫模型

belongs_to :user 

我想打電話時,application.html.erb佈局中,當前用戶擁有的呼叫數量。

目前,我使用下面的字符串:

<%= Call.count %> 

其中一期工程,但它顯然計數所有通話,而不僅僅是當前用戶有來電。

所以我換的是以下:

<%= current_user.Call.calls.count %> 

我很困惑,如何做到這一點。我需要能夠從任何地方撥打電話號碼,以便我可以根據最近30天的時間開始計算等。

+0

另外請注意,呼叫是模型的潛在的不良名字,因爲「呼」是紅寶石的方法。 – tee 2012-01-14 18:50:08

回答

0

您並不是真的想要將數據庫調用放入視圖中,您真的想要那成一個控制器。你會尋找類似User.find(current_user.id).calls.count的東西,因爲這會使用你設置的關聯,或者如果你想忽略你可以做的模型關係Call.where(:user_id => current_user.id).count

所以把下面的代碼放到相關的控制器中在正確的行動中),以及同樣的觀點。

控制器

@count = Call.where(:user_id => current_user.id).count

查看

<%= @count %>

+0

我已經將此添加到我的呼叫模型'def callcount Call.where(:user_id => current_user.id).count end'並使用'<%= Call.callcount%>從視圖中調用它,它是不工作 - 我錯過了什麼? – dannymcc 2012-01-13 14:29:05

+0

已更新我的答案,更多詳細信息 – Elliot 2012-01-13 17:55:28

1

這樣做:

current_user.calls.count 

你可以做同樣的事情與任何用戶對象:

user = User.find(1) 
user.calls.count 

然後,您可以鏈更加的條件做基於日期的計數:

user.calls.where("calls.created_at > ?", 30.days.ago).count