0

我正在构建一个呼叫跟踪应用程序,作为学习 Rails 和 Twilio 的一种方式。现在,我正在尝试按照 Ryan Bates 的教程创建一个图表,向用户显示他们每天的电话数量。

该模型的工作原理是这样的——>电话 has_many 电话

我想做的是创建一个类方法,让我可以做类似的事情

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 回答