Bird
Raised Fist0
Ruby on Railsframework~5 mins

Numericality validation in Ruby on Rails - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of numericality validation in Rails?
Numericality validation ensures that a model attribute contains only numbers, helping to keep data accurate and consistent.
Click to reveal answer
beginner
How do you add a basic numericality validation to a Rails model attribute?
Use validates :attribute_name, numericality: true inside the model to check that the attribute is a number.
Click to reveal answer
intermediate
What option would you use to allow only integers in numericality validation?
Add only_integer: true like validates :age, numericality: { only_integer: true } to accept only whole numbers.
Click to reveal answer
intermediate
How can you validate that a number is greater than or equal to 0 using numericality validation?
Use the greater_than_or_equal_to: 0 option, for example: validates :price, numericality: { greater_than_or_equal_to: 0 }.
Click to reveal answer
beginner
What happens if a non-numeric value is assigned to an attribute with numericality validation?
The model will be invalid and saving it will fail. Rails adds an error message to the attribute explaining it must be a number.
Click to reveal answer
Which validation ensures an attribute is a number in Rails?
Apresence
Bnumericality
Cuniqueness
Dlength
How do you restrict a numericality validation to only allow integers?
Ais_integer: true
Binteger_only: true
Cinteger: true
Donly_integer: true
What option would you use to ensure a number is greater than 10?
Agreater_than: 10
Bmin: 10
Cabove: 10
Dgreater_or_equal: 10
If you want to allow nil values but validate numbers when present, what option do you add?
Askip_nil: true
Boptional: true
Callow_nil: true
Dignore_nil: true
What error message appears if a non-numeric value is assigned to a numericality validated attribute?
A"is not a number"
B"can't be blank"
C"is invalid"
D"must be unique"
Explain how to use numericality validation in a Rails model to accept only positive integers.
Think about combining options inside numericality.
You got /4 concepts.
    Describe what happens when you try to save a Rails model with a non-numeric value on a numericality validated attribute.
    Consider validation failure behavior.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the validates :age, numericality: true line do in a Rails model?
      easy
      A. It checks if age is a string.
      B. It makes the age attribute required.
      C. It ensures the age attribute is a number.
      D. It sets a default value for age.

      Solution

      1. Step 1: Understand numericality validation

        The numericality: true option checks if the attribute is a number.
      2. Step 2: Apply to age attribute

        Since it is applied to age, it ensures age must be numeric.
      3. Final Answer:

        It ensures the age attribute is a number. -> Option C
      4. Quick Check:

        Numericality validation = ensures number [OK]
      Hint: Numericality means the value must be a number [OK]
      Common Mistakes:
      • Confusing numericality with presence validation
      • Thinking it sets default values
      • Assuming it checks for strings
      2. Which of the following is the correct syntax to validate that price is an integer in Rails?
      easy
      A. validates :price, numericality: { only_integer: true }
      B. validates :price, integer: true
      C. validates :price, number: { integer: true }
      D. validates :price, numericality: true, integer: true

      Solution

      1. Step 1: Recall correct numericality syntax

        Rails uses numericality: { only_integer: true } to check integers.
      2. Step 2: Check options

        validates :price, numericality: { only_integer: true } matches this syntax exactly; others are invalid or incorrect.
      3. Final Answer:

        validates :price, numericality: { only_integer: true } -> Option A
      4. Quick Check:

        Integer validation uses only_integer: true [OK]
      Hint: Use only_integer inside numericality hash [OK]
      Common Mistakes:
      • Using a separate integer key instead of inside numericality
      • Writing invalid keys like number or integer alone
      • Missing curly braces for options
      3. Given this model validation:
      validates :score, numericality: { greater_than: 0, less_than_or_equal_to: 100 }

      What happens if you try to save score = 150?
      medium
      A. Validation fails because 150 is greater than 100.
      B. The record saves successfully.
      C. Validation fails because 150 is less than 0.
      D. Validation passes because 150 is a number.

      Solution

      1. Step 1: Understand validation limits

        The validation requires score to be greater than 0 and less than or equal to 100.
      2. Step 2: Check the value 150

        150 is greater than 100, so it violates the less_than_or_equal_to: 100 rule.
      3. Final Answer:

        Validation fails because 150 is greater than 100. -> Option A
      4. Quick Check:

        Value must be ≤ 100, 150 fails [OK]
      Hint: Check all numerical limits carefully [OK]
      Common Mistakes:
      • Ignoring upper limit and assuming number is valid
      • Confusing greater_than with greater_than_or_equal_to
      • Assuming any number passes
      4. Identify the error in this validation:
      validates :quantity, numericality: { only_integer: true, greater_than: 0, less_than: 10, message: 'must be a number' }
      medium
      A. There is no error; this validation is correct.
      B. The message option is misplaced inside the numericality hash.
      C. The validation is missing presence: true.
      D. The only_integer option cannot be combined with greater_than.

      Solution

      1. Step 1: Check placement of message

        The message option should be outside the numericality options hash, not inside it.
      2. Step 2: Validate other options

        only_integer, greater_than, and less_than can be combined correctly.
      3. Final Answer:

        The message option is misplaced inside the numericality hash. -> Option B
      4. Quick Check:

        Message option goes outside numericality hash [OK]
      Hint: Put message outside numericality options hash [OK]
      Common Mistakes:
      • Placing message inside numericality hash
      • Thinking only_integer conflicts with other options
      • Assuming presence is required for numericality
      5. You want to validate a rating attribute that must be an integer between 1 and 5 inclusive. Which validation code correctly enforces this?
      hard
      A. validates :rating, numericality: { only_integer: true, greater_than: 1, less_than: 5 }
      B. validates :rating, numericality: { only_integer: true, greater_than: 1, less_than_or_equal_to: 5 }
      C. validates :rating, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than: 5 }
      D. validates :rating, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 5 }

      Solution

      1. Step 1: Understand inclusive range requirements

        The rating must include 1 and 5, so use greater_than_or_equal_to: 1 and less_than_or_equal_to: 5.
      2. Step 2: Check integer enforcement

        only_integer: true ensures rating is an integer.
      3. Step 3: Compare options

        validates :rating, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 5 } matches all requirements exactly; others exclude 1 or 5 or use wrong operators.
      4. Final Answer:

        validates :rating, numericality: { only_integer: true, greater_than_or_equal_to: 1, less_than_or_equal_to: 5 } -> Option D
      5. Quick Check:

        Inclusive integer range uses >= and <= [OK]
      Hint: Use greater_than_or_equal_to and less_than_or_equal_to for inclusive range [OK]
      Common Mistakes:
      • Using greater_than or less_than excludes boundary values
      • Forgetting only_integer for integer check
      • Mixing up operators for inclusive range
      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