尝试查找特定日期的记录,然后将一个字段加在一起。
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...
有没有办法重构它以使其工作?
最佳答案
您必须使用特定于数据库的函数来实现您要查找的内容。使用 Postgres,您可以通过执行以下操作来实现您正在寻找的东西:
@timesheet.sheets.where("to_char(date, 'day') = ?", Date.today.strftime('%A').downcase)
由于您将手动创建 SQL 字符串,因此您应该确保在列名前加上适当的表名前缀,以避免在查询中加入其他表时发生列名冲突。
关于ruby-on-rails - Rails - 获取与特定 wday 匹配的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35927827/