0

Rails と Twilio を学習する方法として、コール トラッキング アプリケーションを構築しています。現在、Ryan Bates のチュートリアルに従って、ユーザーが 1 日あたりにかけた電話の数を示すグラフを作成しようとしています。

モデルは次のように動作します -- > 電話には多くの呼び出しがあります

私がやりたいのは、次のようなことができるクラスメソッドを作成することです

phone.calls.total_on(日付)

これは、特定の電話が特定の日に受けた通話の合計を示します。

現在私の電話モデルにあるコードは次のとおりです

  def self.total_on(date)
    where("date(calls_at) = ?", date).sum( self.calls.count )
  end

コードでおそらく間違っているのは、sum(self.calls.count) です。私が正しい方向に進んでいれば、これは日付に関係なくすべての呼び出しをカウントします。

特定の日付の呼び出しをカウントするクラス メソッドを作成するにはどうすればよいですか?

ここまでお付き合いいただきありがとうございました!あなたの考えは大歓迎です。

4

2 に答える 2

1

単にこれ:

def total_on(date)
  self.calls.where("placed_at >= ? AND placed_at <= ?", date.beginning_of_day, date.end_of_day).count
end

Phoneオブジェクトがあり、そのオブジェクトに関連付けられた呼び出しが特定の日に発生した回数を知りたいとします。このメソッドは、クラスメソッドではなく、インスタンスメソッドである必要があります。特定の日に特定の電話にかけられた通話の数を確認したい場合、なぜそれがクラス メソッドになるのか理解できません。

by_starを使用する場合、上記のコードは次のようになります。

def total_on(date)
  self.calls.by_day(date).count
end
于 2012-10-11T04:47:46.867 に答える
1

以下を試してください

  def self.total_on(date)
    query = select("calls.id").where("date(calls_at) = ?", date).joins(:calls)
    query.count
  end
于 2012-10-11T06:26:51.017 に答える