2012-10-17 18 views
3

我跟着這些instructions檢查用戶是否已經軟刪除或在不登錄時在下面的例子我可以檢查一個布爾值:的PostgreSQL檢查是否時間戳字段爲空

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" 
+0

你試過':deleted_at => None或none嗎? –

+0

謝謝,沒有工作,它說「未定義的局部變量」或「未定義的常量」 – migu

回答

11

您不能使用此解決方案,當然不修改設計。設計將直接發送您的條件到數據庫中,所以沒有調用方法或使用像squeel庫的方式(這將允許類似where{created_at == nil}

你可以使用How to "soft delete" user with Devise提供的解決方案,但錯誤信息會:「你必須繼續前確認您的帳戶。」

添加到您的資源模型:

def inactive_message 
    !!deleted_at ? :deleted : super 
    end 

,並添加一個消息,你的語言環境:

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

我希望它有幫助!