Подтвердить что ты не робот

Рельсы 3: Управление ActiveRecord:: Исключение RecordNotUnique

Как я могу обработать исключение 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
4b9b3361

Ответ 2

Использование этого метода проверки validate_uniqueness_of не гарантирует отсутствие дубликатов записей.

Вы должны посмотреть здесь

Ответ 3

Вы можете добавить проверку уникальности и по-прежнему иметь возможность изменить код без необходимости использования аварийного восстановления.

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, и он будет уникальным без проверки.