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

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

Class User  false)) end 

我更喜欢时间戳(created_at)字段。 如何检查这样的字段是否为空? 数据库为以下检查抛出错误:

 super(conditions.merge(:deleted_at => false)) # also tried nil, "NULL" and "IS NULL" 

如果不修改设计,你就无法使用这个解决方案。 Devise会将您的条件直接发送到数据库,因此无法调用方法或使用类似squeel的库(这将允许类似于where{created_at == nil}

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

将其添加到您的资源模型:

  def inactive_message !!deleted_at ? :deleted : super end 

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

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

我希望它有所帮助!