Ruby Error

ActiveRecord::RecordNotUnique

ActiveRecord::RecordNotUnique is raised when attempting to insert or update a record that would violate a database-level unique constraint.

Common causes

  • Duplicate email or username registration
  • Race condition creating duplicate records
  • Unique index violation on composite keys
  • Missing uniqueness validation in model
  • Retry logic creating duplicates

How to fix it

  • Add uniqueness validation to model
  • Use find_or_create_by for idempotent operations
  • Rescue and handle duplicate gracefully
  • Use database transactions with proper locking
  • Implement retry logic with proper checks

Example

ActiveRecord::RecordNotUnique example
# Error example
User.create!(email: "alice@example.com")
User.create!(email: "alice@example.com")  # => ActiveRecord::RecordNotUnique

# Fix with find_or_create_by
user = User.find_or_create_by(email: "alice@example.com") do |u|
  u.name = "Alice"
end

# Rescue approach
begin
  User.create!(email: email)
rescue ActiveRecord::RecordNotUnique
  User.find_by(email: email)
end

# Model validation (catches before hitting DB)
class User < ApplicationRecord
  validates :email, uniqueness: true
end

Track ActiveRecord::RecordNotUnique with Checkend

Checkend automatically captures ActiveRecord::RecordNotUnique errors in your Ruby application with full context:

  • Complete backtrace with syntax highlighting
  • Request context (URL, params, headers)
  • Automatic grouping of similar errors
  • Instant notifications when errors occur

Stop debugging in production

Get full error context and fix issues faster with self-hosted error tracking.