ruby-on-rails - 如果日期等于今天或将来的日期,则从 postgres 呈现事件

标签 ruby-on-rails ruby postgresql activerecord

我试图只显示我的数据库中日期从今天开始的事件。我表中的日期列是“开始日期”。在我的事件 Controller 中,我有:

if @events.start_date >= Date.today 
  @events = Event.order('start_date ASC')
end 

我不断在带有“if”语句的行中收到错误“undefined method `start_date' for nil:NilClass”。 我敢肯定,当我尝试和错误时,我也会产生句法/语法问题。我忽略了什么?

最佳答案

它抛出一个 NoMethodError 因为 @events 的值没有被定义或者它的值为 nil:

defined?(@events)
# nil
@events.start_at
# NoMethodError: undefined method `start_at' for nil:NilClass
nil.start_at
# NoMethodError: undefined method `start_at' for nil:NilClass

为此,您可以使用 where过滤 start_date 等于或大于当前时间戳的那些行:

@events = Event.where('start_date >= CURRENT_TIMESTAMP').order(start_date: :asc)

关于ruby-on-rails - 如果日期等于今天或将来的日期,则从 postgres 呈现事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58984548/

相关文章:

ruby-on-rails - Rails 3 找到没有 child 的 parent

ruby-on-rails - 无法抓取数据库 :setup

ruby-on-rails - 缓存过期键

postgresql - PostgreSQL 序列的 Laravel 架构

ruby-on-rails - NoMethodError(#<Profile :0x000000016d1fb8>) in production mode but not in development mode 的未定义方法 `search='

sql - 如何根据以下条件对查询结果进行排序?

ruby-on-rails - 删除回形针图像 Active Admin

ruby-on-rails - ActiveAdmin 中的面包屑列表在使用friendly_id 时显示错误的名称

ruby-on-rails - 在 Rails 开发中加载类后代

ruby-on-rails - 重构大型路由文件