【发布时间】:2013-05-03 10:43:32
【问题描述】:
我的 Rails 3 应用程序中有以下代码:
scope :active, lambda {
where("starts_at <= ? AND ends_at >= ?", Time.now.utc, Time.now.utc)
}
scope :since, lambda { |hide_time|
where("updated_at > ? OR starts_at > ?", hide_time.utc, hide_time.utc) if hide_time
}
def self.display(hide_time)
active.since(hide_time)
end
但是,无论年份是否与当前年份匹配,我都想返回结果。只要日期和月份匹配就可以了。这可能吗?
starts_at 和 ends_at 列采用 datetime 格式。所以即使我没有在表格中设置一年,它们也会自动包含一年:
<%= f.datetime_select :starts_at, :order => [:day, :month], :discard_year => true %>
任何指针将不胜感激。
【问题讨论】:
-
可能需要直接执行 SQL。
-
您使用的是哪个 RDBMS?
-
我想这意味着数据库类型?如果是这样,mySQL
-
解决方案取决于您希望如何处理 2 月 29 日。
标签: ruby-on-rails-3 date activerecord time