如果驗證失敗...「電子郵件已經採取」 redirect_to的登錄頁面
user.rb
validates :name, presence: true, length: { maximum: 20 }
validates :last_name, presence: true, length: { maximum: 20 }
validates :email, presence: true, length: { maximum: 255 }, uniqueness: { case_sensitive: false }, unless: -> { from_omniauth? }
has_secure_password
因爲「電子郵件已經採取」,用戶應被重定向到sessions/new
以其他方式登錄users/new
頁面應刷新並顯示相應的錯誤消息,例如「密碼不能爲空」。
users_controller
if # How to make conditional work where if email is already taken do this...
flash[:alert] = "EMAIL ALREADY TAKEN. LOG IN WITH EMAIL"
render 'sessions/new'
else
render 'new'
end
用戶把已經存在的電子郵件...
Processing by UsersController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"teFpI/xcFe4Ngdtcj8+7DEj+3ipMBObjzBjs143ILQ/bpefsZSuWWh7cxKJJRXqmCAW+35/H9UPKB56SDdO+6A==", "user"=>{"name"=>"test", "last_name"=>"mon", "email"=>"[email protected]", "password"=>"[FILTERED]", "time_zone"=>"Eastern Time (US & Canada)", "subscribe"=>"0"}, "button"=>""}
(0.2ms) BEGIN
User Exists (0.5ms) SELECT 1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER('[email protected]') LIMIT 1
(0.2ms) ROLLBACK
Rendered sessions/new.html.erb within layouts/application (2.0ms)
Rendered layouts/_header.html.erb (1.4ms)
Completed 200 OK in 496ms (Views: 159.6ms | ActiveRecord: 4.7ms)
user.rb
validates :name, presence: true, length: { maximum: 20 }
validates :last_name, presence: true, length: { maximum: 20 }
validates :email, presence: true, length: { maximum: 255 }, uniqueness: { case_sensitive: false }, unless: -> { from_omniauth? }
has_secure_password
既然你不創建一個變量'@ user'(因爲'return')錯誤消息不顯示。 –
@Зелёный哦,很好,趕快,謝謝!答案已更新。 – Gerry