mig*_*igu 3 postgresql ruby-on-rails
我按照这些说明检查用户在登录时是否已被软删除.在下面的示例中,我可以检查布尔值:
Class User < ActiveRecord::Base
def self.find_for_authentication(conditions)
super(conditions.merge(:deleted_flag => false))
end
Run Code Online (Sandbox Code Playgroud)
我更喜欢时间戳(created_at)字段.如何检查这样的字段是否为空?数据库为以下检查抛出错误:
super(conditions.merge(:deleted_at => false)) # also tried nil, "NULL" and "IS NULL"
Run Code Online (Sandbox Code Playgroud)
Leo*_*lán 11
如果不修改设计,你就不能使用这个解决方案.Devise会将您的条件直接发送到数据库,因此无法调用方法或使用像squeel这样的库(这将允许类似的东西)where{created_at == nil}.
您可以使用如何使用Devise"软删除"用户中提供的解决方案,但错误消息将是:"您必须在继续之前确认您的帐户."
将其添加到您的资源模型:
def inactive_message
!!deleted_at ? :deleted : super
end
Run Code Online (Sandbox Code Playgroud)
并向您的语言环境添加消息:
en:
devise:
failure:
deleted: "Your account was deleted."
Run Code Online (Sandbox Code Playgroud)
我希望它有所帮助!
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |