Rails 3:处理ActiveRecord :: RecordNotUniqueexception

如何在控制器中处理ActiveRecord::RecordNotUniqueexception? 谢谢

编辑 :我在生成唯一代码时遇到了exception。 我可以在application_controller.rb中处理exception,但我真正想要的是再次生成代码并且必须在控制器中完成。

 generate_code @couponcode = Couponcode.new(:user_id => current_user.id, :code => @code) 

编辑2

 generate_code begin @couponcode = Couponcode.new(:user_id => current_user.id, :code => @code) rescue ActiveRecord::RecordNotUnique #generate_code @code = "111-11111" @couponcode = Couponcode.new(:user_id => current_user.id, :code => @code) end 

 begin # do stuff rescue ActiveRecord::RecordNotUnique # handle the exception however you want to end 

http://ruby-doc.org/docs/ProgrammingRuby/html/tut_exceptions.html

你也可以使用rescue_from如果这是你需要经常处理的事情。

使用此validation方法validate_uniqueness_of不保证不存在重复的记录插入。

你应该看看这里

您可以添加唯一性validation,但仍有机会更改代码而无需使用救援。

couponcode.rb

 validates_uniqueness_of :code 

控制器:

 @couponcode = Couponcode.new(:user_id => current_user.id) begin couponcode.code = generate_code # might want to break out after a limit here end until @couponcode.valid? @couponcode.save 

但你也可以使用一个uuid,如果没有支票,它将是独一无二的。