Rails - 获取与特定wday匹配的记录

时间:2016-03-10 21:39:01

标签: ruby-on-rails postgresql ruby-on-rails-4

尝试在特定日期查找记录,然后一起添加字段。

days = 7.times

  days.each do |day|
    today = Date::DAYNAMES[day]
    @dailysheets = @timesheet.sheets.where(:date.strftime("%A") == today)
    @dailyhours =+ @dailysheets.sum(:hours)
  end  

问题是我无法在where条件中使用.strftime ...

有没有办法重构这个?

1 个答案:

答案 0 :(得分:0)

您必须使用特定于数据库的功能来实现您所需的功能。使用Postgres,您可以通过执行以下操作来实现您所需的目标:

@timesheet.sheets.where("to_char(date, 'day') = ?", Date.today.strftime('%A').downcase)

由于您将手动创建SQL字符串,因此应确保在列名前面加上相应的表名称,以避免在查询中加入其他表时发生列名冲突。