#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:
Вы не должны делать это в контроллере. Это проверки, которые вы должны выполнять в своей модели. Пожалуйста, прочтите это руководство, чтобы понять, как это сделать.