我正在构建一个呼叫跟踪应用程序,作为学习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)。如果我在正确的方向,这将计算所有呼叫,无论日期如何。
我如何制作一个可以计算特定日期调用的类方法?
感谢您坚持到目前为止!非常感谢您的想法。
答案 0 :(得分:1)
简单地说:
def total_on(date)
self.calls.where("placed_at >= ? AND placed_at <= ?", date.beginning_of_day, date.end_of_day).count
end
假设您有一个Phone
对象,并且您想知道在某一天发生了多少与该对象相关的调用。此方法应为实例方法,而不是类方法。我不明白为什么如果你想知道特定日的特定手机有多少次通话,它会是一种类方法。< / p>
如果您使用by_star,则上述代码为:
def total_on(date)
self.calls.by_day(date).count
end
答案 1 :(得分:1)
尝试以下
def self.total_on(date)
query = select("calls.id").where("date(calls_at) = ?", date).joins(:calls)
query.count
end