如何根据ruby on rails上的验证错误结果执行不同的操作?

时间:2012-10-02 06:14:55

标签: ruby-on-rails

我在用户模型中有一行,用于在注册时验证电子邮件的以下内容

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

如果有错误,我会使用错误消息呈现注册页面('new'): 在控制器中:

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 个答案:

答案 0 :(得分:1)

ActiveRecord Model invalid?似乎就是你要找的东西

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