我正在生成一个报告,其中用户选择一个月,报告显示在月份内访问该代理商的家庭数量,存储为@month。
对于访问日期,每个家庭可以使用visited_on属性进行多次访问。一个家庭可能在一个月内不止一次访问,但我只想知道当月访问了多少个不同的家庭
这是我迄今为止最好的一次拍摄:
def house_count(month)
where(housholds.visits.visited_on.strftime('%M') == month ).count
end
这种方法在我的家庭控制器中,当然它不起作用
如何生成显示例如的报告。月:6月家庭总数:45
答案 0 :(得分:0)
将代码移至Household
模型:
class Household < ActiveRecord::Base
def visits_count(month)
visits.where("strftime('%m', visited_on) + 0 = ?", month).count
end
end
根据this answer,+ 0
有助于格式化。
要尝试的其他选项,具体取决于您的数据库类型:
where("extract(month from visited_on) = ?", month)
where("MONTH(visited_on) = ?", month)
答案 1 :(得分:0)
我在问题中不清楚,但是家庭有访问权限,所以我将方法移到了访问表中并使用了:
class Visit < ActiveRecord::Base
def self.by_month(month)
where("select(to_char(visited_on, 'FMMonth')) = ?", month)
end
这给了我每月的访问次数 - 我仍然需要为访问表中包含的household_id添加DISTINCT,这样我就可以统计不同的家庭,以防同一家庭访问两次