我目前在Rails項目中使用Devise進行用戶註冊/身份驗證。 當用戶想要取消他們的帳戶時,用戶對象被以下面的方式軟刪除。如何使用Devise停止軟刪除用戶的登錄
How to "soft delete" user with Devise
我implmenetation有一個小的差異這種方式。 用戶模型有一個屬性'deleted_flag'。 而且,soft_delete方法執行「update_attribtue(:deleted_flag,true)」
但是,我必須暗示sign_in的行動。 在我的意思是以下。
class SessionsController < Devise::SessionsController
def create
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
if resource.deleted_flag
p "deleted account : " + resource.deleted_flag.to_s
sign_out(resource)
render :controller => :users, :action => :index
else
if is_navigational_format?
if resource.sign_in_count == 1
set_flash_message(:notice, :signed_in_first_time)
else
set_flash_message(:notice, :signed_in)
end
end
sign_in(resource_name, resource)
respond_with resource, :location => redirect_location(resource_name, resource)
end
end
end
我覺得這段代碼有奇怪的一點。
如果刪除的用戶試圖唱歌, 系統允許記錄並立即註銷。 而且,系統不能顯示flash [:alert]消息...
我想知道兩點。
- 如何實現禁止已刪除的用戶登錄?
- 當刪除的用戶嘗試登錄時,如何實現顯示flash [:alert]?
請參閱http://stackoverflow.com/q/8107966/249760 - 它實際上既可以停止登錄用戶,也可以踢出當前會話。 –