Rails 3:处理ActiveRecord :: RecordNotUniqueexception
如何在控制器中处理ActiveRecord::RecordNotUnique
exception? 谢谢
编辑 :我在生成唯一代码时遇到了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,如果没有支票,它将是独一无二的。