如何避免错误 – >重复输入

表用户(具有id,用户名,密码,is_admin)

我的控制器(我添加的地方)

def create @user = User.new(params[:respondent]) # entered = User.find(:all, :conditions => ["email = ?", @user]) render :json => @user.to_ext_json(:success => @user.save) return false end 

当我粘贴相同的电子邮件时,我得到了这个:

 pre>Mysql::Error: Duplicate entry 'sam@sa.com' for key 'email': INSERT INTO `users` (`created_at`, `updated_at`, `email`) VALUES('2011-05-05 09:05:57', '2011-05-05 09:05:57', 'sam@sa.com')

怎么避免这个? 我应该在控制器中写什么(有些如果?)

谢谢!

您可以validation模型中的唯一性

 validates :email, :uniqueness => :true 

或者您可以像这样在控制器中拯救RecordNotUnique

 begin # create user rescue ActiveRecord::RecordNotUnique => e # handle duplicate entry end 

你不应该在控制器中这样做。 这些是您应该在模型中进行的validation。 请仔细阅读本指南以了解如何进行操作。