Bird
Raised Fist0
Ruby on Railsframework~5 mins

Column types and attributes in Ruby on Rails - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of column types in Rails migrations?
Column types define the kind of data a database column will store, such as strings, integers, or dates. This helps Rails and the database know how to handle and store the data correctly.
Click to reveal answer
beginner
Name three common column types used in Rails migrations.
Common column types include string (for short text), integer (for whole numbers), and boolean (for true/false values).
Click to reveal answer
beginner
What does the null: false attribute do in a Rails migration column?
It ensures that the column cannot have empty (NULL) values. This means every record must have a value for this column.
Click to reveal answer
beginner
How does the default attribute work in Rails migrations?
The default attribute sets a value automatically for the column when a new record is created without specifying that column's value.
Click to reveal answer
beginner
Why would you use the timestamps method in a Rails migration?
It adds two columns, created_at and updated_at, which automatically track when a record is created and last updated.
Click to reveal answer
Which column type is best for storing a user's email address in Rails?
Aboolean
Binteger
Ctext
Dstring
What does setting null: false on a column do?
ASets a default value
BAllows the column to be empty
CPrevents the column from being empty
DDeletes the column
Which attribute sets a value automatically if none is provided when creating a record?
Anull
Bdefault
Cindex
Dunique
What columns does t.timestamps add in a migration?
Acreated_at and updated_at
Bstart_date and end_date
Cid and uuid
Dname and email
Which column type would you use to store true/false values?
Aboolean
Binteger
Cstring
Ddate
Explain how you would define a column for a user's age that must always have a value and defaults to 18 if not provided.
Think about the type of data, whether it can be empty, and what value to use if none is given.
You got /3 concepts.
    Describe the purpose of the timestamps method in Rails migrations and why it is useful.
    Consider what information about records is important to keep automatically.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which column type in Rails is best suited to store true or false values?
      easy
      A. boolean
      B. string
      C. integer
      D. text

      Solution

      1. Step 1: Understand column types for data

        Boolean columns store true or false values, perfect for yes/no data.
      2. Step 2: Compare with other types

        String and text store text, integer stores numbers, so they don't fit true/false data.
      3. Final Answer:

        boolean -> Option A
      4. Quick Check:

        Boolean = true/false [OK]
      Hint: True/false data uses boolean type in Rails [OK]
      Common Mistakes:
      • Choosing string or text for true/false data
      • Using integer to represent boolean values
      • Confusing text with boolean type
      2. Which of the following is the correct syntax to add a non-nullable string column named title with a default value 'Untitled' in a Rails migration?
      easy
      A. add_column :books, :title, :text, null: false, default: 'Untitled'
      B. add_column :books, :title, :string, default: 'Untitled', null: true
      C. add_column :books, :title, :string, null: false, default: 'Untitled'
      D. add_column :books, :title, :string, null: false

      Solution

      1. Step 1: Identify correct column type and options

        We want a string type with null: false and default: 'Untitled'.
      2. Step 2: Check syntax order and options

        add_column :books, :title, :string, null: false, default: 'Untitled' correctly uses :string, null: false, and default: 'Untitled'. The option with null: true allows null values. The option with :text uses the wrong type. The option without default misses the default value.
      3. Final Answer:

        add_column :books, :title, :string, null: false, default: 'Untitled' -> Option C
      4. Quick Check:

        Correct syntax with null and default options [OK]
      Hint: Use null: false and default: 'value' together in add_column [OK]
      Common Mistakes:
      • Forgetting null: false for required columns
      • Using wrong column type like text instead of string
      • Omitting default value when needed
      3. Given this migration snippet:
      create_table :users do |t|
        t.integer :age, null: false, default: 18
        t.boolean :active, default: true
      end

      What will be the default value of active for a new user if not specified?
      medium
      A. true
      B. false
      C. nil
      D. 0

      Solution

      1. Step 1: Read the default value for active

        The migration sets default: true for the boolean column active.
      2. Step 2: Understand default behavior

        If no value is given when creating a user, active will be set to true automatically.
      3. Final Answer:

        true -> Option A
      4. Quick Check:

        Boolean default true means new records get true [OK]
      Hint: Default value sets initial data if none provided [OK]
      Common Mistakes:
      • Assuming default is false if not specified
      • Confusing nil with default value
      • Thinking integer 0 is default for boolean
      4. You wrote this migration line:
      add_column :orders, :price, :integer, null: true, default: 0

      But you want to ensure price is always set and never null. What is the fix?
      medium
      A. Add null: true, default: nil
      B. Change null: true to null: false
      C. Change :integer to :float
      D. Remove default: 0

      Solution

      1. Step 1: Identify null constraint

        Currently null: true allows price to be null, which is not desired.
      2. Step 2: Fix null constraint

        Changing null: true to null: false ensures price cannot be null.
      3. Final Answer:

        Change null: true to null: false -> Option B
      4. Quick Check:

        Use null: false to prevent null values [OK]
      Hint: null: false means column must have a value [OK]
      Common Mistakes:
      • Leaving null: true when value must be required
      • Removing default without fixing null
      • Changing type without addressing null
      5. You want to add a status column to your tasks table that stores short text but limits it to 10 characters, defaults to 'pending', and cannot be null. Which migration line is correct?
      hard
      A. add_column :tasks, :status, :string, limit: 255, null: false, default: 'pending'
      B. add_column :tasks, :status, :text, null: false, default: 'pending'
      C. add_column :tasks, :status, :string, null: true, default: 'pending'
      D. add_column :tasks, :status, :string, limit: 10, null: false, default: 'pending'

      Solution

      1. Step 1: Choose correct column type and limit

        Use :string with limit: 10 to restrict text length to 10 characters.
      2. Step 2: Set null and default options

        Set null: false to require a value and default: 'pending' for initial value.
      3. Final Answer:

        add_column :tasks, :status, :string, limit: 10, null: false, default: 'pending' -> Option D
      4. Quick Check:

        String with limit, null false, and default set [OK]
      Hint: Use limit to restrict string length in migrations [OK]
      Common Mistakes:
      • Using text type which ignores limit
      • Allowing null when value is required
      • Setting wrong limit size
      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