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

标签 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...

有没有办法重构它以使其工作?

最佳答案

您必须使用特定于数据库的函数来实现您要查找的内容。使用 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/

相关文章:

ruby-on-rails - 递归更新两个相关对象图的模式

ruby-on-rails - Rake任务rails :upgrade:check is not working on windows. Rails 3升级问题

postgresql - 如何处理与 gorp 的连接?

sql - Rails 在 ActiveRecord::Relation 中使用 OR 进行搜索

ruby-on-rails - Rails : can I use polymorphic references with non-integer primary keys?

postgresql - 如何在学说查询中获取数组长度?

sql - 在一个脚本 postgresql 中创建数据库、表等

ruby-on-rails - Twilio 的未定义方法 `account'

ruby-on-rails - Rails + Authlogic + rspec

ruby-on-rails - railscast# 238 的问题,date_select 不适用于 rails 4。