我向用戶添加了一個名爲activated的屬性。如果它是0,我想阻止登錄,如果它是1,我想允許它。我推翻了設備會話控制器是這樣如何設置設備以防止未激活的用戶登錄
def create
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
set_flash_message(:notice, :signed_in) if is_navigational_format?
if resource.activated == 0
redirect_to root_path
return
end
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_in_path_for(resource)
end
和我的路線是這樣的
devise_for :users, :controllers => {:registrations => 'registrations', :sessions => 'sessions'} do
get "https://stackoverflow.com/users/sign_out" => "devise/sessions#destroy", :as => :destroy_user_session
end
爲何仍允許登錄與激活= 0(IM假設該用戶是函數稱爲登錄。)
你應該爲'activated'字段使用一個布爾值,它會更加直觀。 –
@DevinM真的,但它已經是int(我認爲在應用程序之前將一個字段分配爲一個布爾值,並且因爲布爾不是一個類型而出現錯誤...我認爲...您如何命名該類型作爲bool) – jack
你想使用'boolean'而不是'bool'類型,參見http://api.rubyonrails.org/classes/ActiveRecord/Migration.html –