Как избежать ошибки -> Дублирующая запись

#mysql #sql #ruby-on-rails

#mysql #sql #ruby-on-rails

Вопрос:

пользователь таблицы (с идентификатором, именем пользователя, паролем, 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')</pre>
  

Как этого избежать? Что я должен написать в контроллере (некоторые if?)

Спасибо!

Ответ №1:

вы можете либо проверить уникальность в вашей модели

 validates :email, :uniqueness => :true
  

или вы можете сохранить RecordNotUnique в вашем контроллере следующим образом

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

Ответ №2:

Вы не должны делать это в контроллере. Это проверки, которые вы должны выполнять в своей модели. Пожалуйста, прочтите это руководство, чтобы понять, как это сделать.