我正在构建一个呼叫跟踪应用程序,作为学习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)。如果我的方向正确,这将计算所有呼叫,无论日期如何。
我将如何制作一个类方法来计算特定日期的调用?
谢谢你到目前为止一直和我在一起!非常感谢您的想法。
简单地说:
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
尝试以下操作
def self.total_on(date)
query = select("calls.id").where("date(calls_at) = ?", date).joins(:calls)
query.count
end