2012-10-02 15 views
0

我有一個驗證用於在標誌電子郵件的跟進如何根據ruby on rails上的驗證錯誤結果執行不同的操作?

validates :email, presence: true, 
       uniqueness: { case_sensitive: false }, 
       length: { maximum: 254 } 

如果有錯誤,我的錯誤信息呈現在註冊頁面(「新」)的用戶模型的行: 在控制器:

if @user.save 
    redirect_to root_path 
else 
    render 'new' 
end 

在視圖:

<% if @user.errors.any? %> 
    <div id="error_explanation"> 
     <p><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</p> 
     <ul> 
     <% @user.errors.full_messages.each do |msg| %> 
      <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
<% end %> 

但是,如果電子郵件地址的用戶輸入的電子郵件地址是不是唯一的,我想重定向到一個新的頁面。有什麼辦法可以做到這一點?如何修改控制器以針對此特定類型的錯誤執行不同的操作?

回答

1

ActiveRecord Model invalid?似乎是你在找什麼

// in controller 
redirect_to your_path if @user.errors.invalid?(:email)  
+0

的感謝!我只想這樣做,如果電子郵件不是唯一的,例如,如果電子郵件地址無效,我只會顯示解釋原因的錯誤消息,但不會重定向到新頁面。 – mirri66