1

我正在生成一份报告,其中用户选择了一个月,该报告显示当月访问该机构的家庭数量存储为@month。

每个家庭可以在访问日期进行多次访问,并带有visited_on 属性。一个家庭可能一个月访问不止一次,但我只想知道一个月访问了多少不同的家庭

这是我迄今为止最好的镜头:

def house_count(month)
  where(housholds.visits.visited_on.strftime('%M') == month ).count
end

这种方法在我的家庭控制器中,当然它不起作用

我如何生成显示例如的报告。月份:6 月看到的家庭总数:45

4

2 回答 2

0

将代码移至Household模型:

class Household < ActiveRecord::Base

  def visits_count(month)
    visits.where("strftime('%m', visited_on) + 0 = ?", month).count
  end

end

根据这个答案+ 0有助于格式化。

其他可以尝试的选项,具体取决于您的数据库类型:

where("extract(month from visited_on) = ?", month)
where("MONTH(visited_on) = ?", month)
于 2013-05-23T04:10:13.933 回答
0

我不清楚这个问题,但家庭有访问,所以我将方法移到访问表并使用:

class Visit < ActiveRecord::Base  

def self.by_month(month)
  where("select(to_char(visited_on, 'FMMonth')) = ?", month)
end

这给了我每月的访问次数 - 我仍然需要为访问表中包含的 family_id 添加 DISTINCT,所以我计算不同的家庭,以防同一个家庭访问两次

于 2013-05-24T12:32:15.387 回答