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
Related errors
Stop debugging in production
Get full error context and fix issues faster with self-hosted error tracking.