validates :email, uniqueness: true, what will happen if you try to save two records with the same email?class User < ApplicationRecord validates :email, uniqueness: true end user1 = User.create(email: 'test@example.com') user2 = User.new(email: 'test@example.com') success = user2.save
The validates :email, uniqueness: true ensures that no two records have the same email. When you try to save a second record with an existing email, the validation fails and save returns false.
class User < ApplicationRecord # Add validation here end
The correct syntax is validates :username, uniqueness: { case_sensitive: false }. The option case_sensitive must be inside the uniqueness hash.
class User < ApplicationRecord validates :email, uniqueness: true end # Two threads run: User.create(email: 'a@example.com') User.create(email: 'a@example.com')Why might both records be created despite the validation?
Uniqueness validation happens in Ruby code before saving. If two processes check at the same time, both may pass validation before either saves, causing duplicates. This is a race condition. To fully prevent duplicates, a unique database index is needed.
user.errors[:email] after a failed uniqueness validation?class User < ApplicationRecord validates :email, uniqueness: true end user1 = User.create(email: 'dup@example.com') user2 = User.new(email: 'dup@example.com') user2.valid? errors = user2.errors[:email]What is the value of
errors?When uniqueness validation fails, Rails adds the error message "has already been taken" to the attribute's errors.
Rails validations run in application code and can miss duplicates during concurrent writes. A unique index in the database guarantees no duplicates can be saved, ensuring data integrity.