Uniqueness validation makes sure no two records have the same value for a specific field. This helps keep data clean and avoids duplicates.
0
0
Uniqueness validation in Ruby on Rails
Introduction
When you want to ensure each user has a unique email address.
When product codes must not repeat in your inventory.
When usernames need to be unique for login.
When you want to prevent duplicate entries in a database table.
Syntax
Ruby on Rails
validates :field_name, uniqueness: true
Use this inside a Rails model to check uniqueness before saving.
It checks the database to prevent duplicates.
Examples
This ensures each user's email is unique.
Ruby on Rails
class User < ApplicationRecord
validates :email, uniqueness: true
endThis makes product codes unique, ignoring letter case.
Ruby on Rails
class Product < ApplicationRecord
validates :code, uniqueness: { case_sensitive: false }
endThis ensures usernames are unique per account, allowing same username in different accounts.
Ruby on Rails
class Member < ApplicationRecord
validates :username, uniqueness: { scope: :account_id }
endSample Program
This example creates a user with an email, then tries to create another with the same email. The second user is invalid because the email is already taken.
Ruby on Rails
class User < ApplicationRecord validates :email, uniqueness: true end # In Rails console or test user1 = User.create(email: 'test@example.com') user2 = User.new(email: 'test@example.com') valid = user2.valid? errors = user2.errors.full_messages
OutputSuccess
Important Notes
Uniqueness validation works at the application level, so race conditions can still happen. Use a unique index in the database for full safety.
By default, uniqueness is case sensitive. Use case_sensitive: false to ignore case.
You can use scope to make uniqueness apply within a group, like per user or account.
Summary
Uniqueness validation prevents duplicate values in a database field.
It is added inside Rails models using validates :field, uniqueness: true.
For full protection, combine it with a unique database index.