ruby-on-rails - date.today Rails 2.3.9 的命名范围

标签 ruby-on-rails ruby date named-scope

使用 Rails 2.3.9 应用程序并想知道如何编写我的 named_scope 以便我只获得当前日期的 workouts。我在应用程序 Controller 中使用 before_filter 设置时区。以下不会引发错误,只是不会过滤:

锻炼.rb

named_scope :today_only, :conditions => [ "workouts.created_at <= ? AND workouts.created_at >= ?", Time.zone.now, 1.days.ago ]

应用程序 Controller .rb

before_filter :set_user_time_zone

最佳答案

您没有看到想要的响应,因为 Ruby 正在评估您对 Time.now 的调用,它是在评估您的类定义时,而不是在您调用范围时。您需要将 lambda 传递给您的 named_scope 调用,以使其对每个请求进行评估:

# ensure that Time.now is evaluated on every call
named_scope :today_only, lambda {{ :conditions => ["workouts.created_at BETWEEN ? AND ?", Time.zone.now.at_beginning_of_day, Time.zone.now.end_of_day ] }}

此外,我认为您的时间界限可能不正确。您是要查找过去 24 小时内创建的锻炼(相对于 Time.now),还是仅查找“今天”创建的锻炼?您的示例适用于前者,上面的示例适用于后者。

关于ruby-on-rails - date.today Rails 2.3.9 的命名范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5752121/

相关文章:

ruby-on-rails - rails : Test a method that is was called only once

jquery - 通过 API 的 AJAX Post 请求 - 解析请求参数时发生错误

ruby - 编译阻止了什么?

php - 使用 PHP 组织日期格式

javascript - 我们如何在 ruby​​ on Rails 文档中使用 d3.js?

ruby-on-rails - 从单一颜色生成配色方案

mysql - 从字符串字段转换 MySQL 中的日期

java - 如何使用 Java Calendar 检查今天是否星期日

sql - Rails 4 "where"-query with "has_many belongs_to"-relationship, search with specific count

ruby-on-rails - 删除确认轨