Bird
Raised Fist0
Ruby on Railsframework~10 mins

Uniqueness validation in Ruby on Rails - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to add a uniqueness validation for the username attribute in a Rails model.

Ruby on Rails
validates :username, [1]: true
Drag options to blanks, or click blank then click option'
Auniqueness
Bpresence
Clength
Dnumericality
Attempts:
3 left
💡 Hint
Common Mistakes
Using presence instead of uniqueness will only check if the field is filled.
Using length or numericality does not check uniqueness.
2fill in blank
medium

Complete the code to make the uniqueness validation case insensitive.

Ruby on Rails
validates :email, uniqueness: { [1]: false }
Drag options to blanks, or click blank then click option'
Acase_sensitive
Bcase_insensitive
Cignore_case
Dcase_sensitive_option
Attempts:
3 left
💡 Hint
Common Mistakes
Using a non-existent option like case_insensitive.
Setting case_sensitive to true does not ignore case.
3fill in blank
hard

Fix the error in the uniqueness validation syntax.

Ruby on Rails
validates :nickname, uniqueness: [1]
Drag options to blanks, or click blank then click option'
Atrue
Bfalse
C{ case_sensitive: false }
Dnil
Attempts:
3 left
💡 Hint
Common Mistakes
Passing true or false directly when options are needed.
Passing nil causes an error.
4fill in blank
hard

Fill both blanks to add a uniqueness validation scoped to the :account_id attribute.

Ruby on Rails
validates :email, uniqueness: { [1]: :account_id, [2]: false }
Drag options to blanks, or click blank then click option'
Ascope
Bcase_sensitive
Cunique
Dignore_case
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect option names like unique or ignore_case.
Mixing up the order of options.
5fill in blank
hard

Fill all three blanks to add a uniqueness validation with a custom error message and case insensitivity.

Ruby on Rails
validates :username, uniqueness: { [1]: false, [2]: "[3]" }
Drag options to blanks, or click blank then click option'
Acase_sensitive
Bmessage
Chas already been taken
Dscope
Attempts:
3 left
💡 Hint
Common Mistakes
Using scope instead of message for the error text.
Not setting case_sensitive to false for case insensitivity.

Practice

(1/5)
1. What does validates :email, uniqueness: true do in a Rails model?
easy
A. Deletes duplicate email records from the database
B. Prevents saving records with duplicate email values
C. Allows multiple records with the same email
D. Automatically encrypts the email field

Solution

  1. Step 1: Understand uniqueness validation purpose

    Uniqueness validation ensures no two records have the same value for the specified field.
  2. Step 2: Apply to the email field

    Using validates :email, uniqueness: true means Rails will check that the email is unique before saving.
  3. Final Answer:

    Prevents saving records with duplicate email values -> Option B
  4. Quick Check:

    Uniqueness validation = prevents duplicates [OK]
Hint: Uniqueness validation stops duplicate field values [OK]
Common Mistakes:
  • Thinking it encrypts data
  • Assuming it deletes duplicates automatically
  • Believing it allows duplicates
2. Which is the correct syntax to add uniqueness validation for a username in a Rails model?
easy
A. validates :username, unique: true
B. validate :username, uniqueness: true
C. validates :username, uniqueness: true
D. validates_uniqueness_of :username, true

Solution

  1. Step 1: Recall Rails validation syntax

    Rails uses validates :field, uniqueness: true for uniqueness validation.
  2. Step 2: Check each option

    validates :username, uniqueness: true matches the correct syntax exactly; others have syntax errors or deprecated style.
  3. Final Answer:

    validates :username, uniqueness: true -> Option C
  4. Quick Check:

    Correct uniqueness syntax = validates :field, uniqueness: true [OK]
Hint: Use 'validates :field, uniqueness: true' syntax [OK]
Common Mistakes:
  • Using 'unique' instead of 'uniqueness'
  • Using 'validate' instead of 'validates'
  • Using deprecated 'validates_uniqueness_of' syntax incorrectly
3. Given this model code:
class User < ApplicationRecord
  validates :email, uniqueness: true
end

What happens if you try to save two users with the same email?
medium
A. The second user fails to save due to validation error
B. Both users save successfully
C. An exception is raised immediately
D. The database automatically rejects the second user

Solution

  1. Step 1: Understand Rails validation behavior

    Uniqueness validation runs before saving and prevents duplicates by adding errors.
  2. Step 2: Effect on saving duplicate email

    The first user saves fine; the second user triggers validation failure and does not save.
  3. Final Answer:

    The second user fails to save due to validation error -> Option A
  4. Quick Check:

    Uniqueness validation blocks duplicates on save [OK]
Hint: Second duplicate save triggers validation error [OK]
Common Mistakes:
  • Thinking both save successfully
  • Expecting a database exception instead of validation error
  • Assuming database rejects without validation
4. Identify the problem in this model code:
class Product < ApplicationRecord
  validates :code, uniqueness: true
  validates :code, presence: true
end

Why might duplicates still be saved?
medium
A. Uniqueness validation is case sensitive by default
B. Presence validation conflicts with uniqueness validation
C. The validations are in the wrong order
D. No unique index exists in the database for code

Solution

  1. Step 1: Understand validation vs database constraints

    Rails validations check before saving but do not guarantee uniqueness at the database level.
  2. Step 2: Check for unique index necessity

    Without a unique database index on code, race conditions can allow duplicates.
  3. Final Answer:

    No unique index exists in the database for code -> Option D
  4. Quick Check:

    Validation alone can't prevent duplicates without DB index [OK]
Hint: Add unique DB index to fully prevent duplicates [OK]
Common Mistakes:
  • Assuming validations alone guarantee uniqueness
  • Confusing presence and uniqueness validations
  • Thinking validation order matters here
5. You want to ensure usernames are unique but case insensitive (e.g., 'User1' and 'user1' count as duplicates). How do you write the validation?
hard
A. validates :username, uniqueness: { case_sensitive: false }
B. validates :username, uniqueness: true, case_sensitive: false
C. validates :username, unique: { case_sensitive: false }
D. validates_uniqueness_of :username, case_sensitive: true

Solution

  1. Step 1: Recall uniqueness validation options

    To make uniqueness case insensitive, use uniqueness: { case_sensitive: false }.
  2. Step 2: Check each option's correctness

    validates :username, uniqueness: { case_sensitive: false } uses correct syntax and option key; others have syntax errors or wrong case sensitivity.
  3. Final Answer:

    validates :username, uniqueness: { case_sensitive: false } -> Option A
  4. Quick Check:

    Case insensitive uniqueness = uniqueness: { case_sensitive: false } [OK]
Hint: Use uniqueness with case_sensitive: false for case insensitivity [OK]
Common Mistakes:
  • Placing case_sensitive outside uniqueness hash
  • Using 'unique' instead of 'uniqueness'
  • Setting case_sensitive to true by mistake
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard