如何处理控制器中的ActiveRecord::RecordNotUnique
异常?感谢
编辑:我在生成唯一代码时遇到了异常。我可以在application_controller.rb中处理异常,但我真正想要的是再次生成代码并且必须在控制器中完成。
generate_code
@couponcode = Couponcode.new(:user_id => current_user.id, :code => @code)
EDIT2 :
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
答案 0 :(得分:23)
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
。
答案 1 :(得分:4)
使用此验证方法 validate_uniqueness_of 并不能保证不存在重复的记录插入。
你应该看here
答案 2 :(得分:2)
您可以添加唯一性验证,但仍有机会更改代码而无需使用救援。
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,如果没有支票就会是唯一的。