PostgreSQL如何检查时间戳字段是否为空?

3

我按照这些说明来检查用户在登录时是否已被软删除。在下面的示例中,我可以检查布尔值:

Class User < ActiveRecord::Base
  def self.find_for_authentication(conditions)
    super(conditions.merge(:deleted_flag => false))
  end

我希望有一个时间戳(created_at)字段。如何检查这样的字段是否为空?数据库会对以下检查抛出错误:
super(conditions.merge(:deleted_at => false)) # also tried nil, "NULL" and "IS NULL"

你尝试过使用 :deleted_at => None 或者 none 吗? - Clodoaldo Neto
谢谢,不起作用,它显示“未定义的本地变量”或“未定义的常量”。 - migu
1个回答

11

如果不修改设备,就不能使用此解决方案。设备将直接向数据库发送您的条件,因此无法调用方法或使用类似 squeel 的库(允许类似 where {created_at == nil})。

您可以使用在如何“软删除”带有设备的用户中提供的解决方案,但错误消息将是:“在继续之前,您必须确认您的帐户。”

将此添加到资源模型中:

  def inactive_message
    !!deleted_at ? :deleted : super
  end

并向您的语言环境添加一条消息:

en:
  devise:
    failure:
      deleted: "Your account was deleted."

希望这有所帮助!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接