Bird
Raised Fist0
Ruby on Railsframework~5 mins

CRUD operations through models in Ruby on Rails - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does CRUD stand for in Rails models?
CRUD stands for Create, Read, Update, and Delete. These are the four basic actions you can perform on data using Rails models.
Click to reveal answer
beginner
How do you create a new record using a Rails model?
Use Model.create(attributes) to create and save a new record in one step, or Model.new(attributes) followed by save to create it in two steps.
Click to reveal answer
beginner
How do you find a record by its ID in Rails?
Use Model.find(id) to get a record by its ID. It raises an error if not found. Use Model.find_by(attribute: value) to find by other attributes safely.
Click to reveal answer
beginner
How do you update an existing record in Rails?
Find the record first, then use update(attributes) to change and save it in one step, or assign attributes and call save separately.
Click to reveal answer
beginner
How do you delete a record using Rails models?
Use destroy on a model instance to delete it from the database. For example, record.destroy removes that record.
Click to reveal answer
Which method creates and saves a new record in one step?
AModel.new(attributes)
BModel.create(attributes)
CModel.update(attributes)
DModel.destroy
What happens if Model.find(id) does not find a record?
ARaises an error
BReturns an empty array
CCreates a new record
DReturns nil
Which method updates attributes and saves the record immediately?
Anew(attributes)
Bsave
Cupdate(attributes)
Ddestroy
How do you delete a record from the database?
AModel.destroy_all
Brecord.delete
CModel.delete
Drecord.destroy
Which method safely finds a record by attribute without raising an error if not found?
AModel.find_by(attribute: value)
BModel.create
CModel.find(id)
DModel.update
Explain how to perform all four CRUD operations using Rails models with simple examples.
Think about how you add, look up, change, and remove data in a database using Rails.
You got /4 concepts.
    Describe the difference between Model.find and Model.find_by in Rails.
    Consider what happens when the record does not exist.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which Rails model method is used to add a new record to the database?
      easy
      A. create
      B. find
      C. update
      D. destroy

      Solution

      1. Step 1: Understand CRUD operations

        CRUD means Create, Read, Update, Delete. Each operation has a matching Rails model method.
      2. Step 2: Match method to action

        create adds a new record, find reads, update changes, and destroy deletes.
      3. Final Answer:

        create -> Option A
      4. Quick Check:

        Create = create [OK]
      Hint: Create means adding new data, so use create [OK]
      Common Mistakes:
      • Confusing find with create
      • Using update to add new records
      • Trying to delete with create
      2. Which of the following is the correct syntax to update a user's email in Rails?
      easy
      A. user.change(email = 'new@example.com')
      B. user.update(email: 'new@example.com')
      C. user.modify(email: 'new@example.com')
      D. user.edit(email => 'new@example.com')

      Solution

      1. Step 1: Recall Rails update syntax

        The correct method to change attributes is update with a hash of attributes.
      2. Step 2: Check syntax correctness

        user.update(email: 'new@example.com') uses symbol keys and colon, which is correct Ruby syntax.
      3. Final Answer:

        user.update(email: 'new@example.com') -> Option B
      4. Quick Check:

        Update syntax = user.update(hash) [OK]
      Hint: Use update with symbol keys and colon for attributes [OK]
      Common Mistakes:
      • Using assignment (=) inside method arguments
      • Using non-existent methods like change or modify
      • Wrong hash syntax like email => instead of email:
      3. Given the code:
      user = User.find(1)
      user.destroy
      puts User.exists?(1)

      What will be printed?
      medium
      A. An error
      B. true
      C. nil
      D. false

      Solution

      1. Step 1: Understand what destroy does

        destroy deletes the record from the database permanently.
      2. Step 2: Check if record exists after deletion

        User.exists?(1) returns false because the user with ID 1 was deleted.
      3. Final Answer:

        false -> Option D
      4. Quick Check:

        Destroy removes record, so exists? returns false [OK]
      Hint: Destroy deletes record; check existence returns false after [OK]
      Common Mistakes:
      • Thinking destroy only marks record inactive
      • Assuming exists? returns true after deletion
      • Confusing destroy with delete (which skips callbacks)
      4. Identify the error in this code snippet:
      user = User.find_by(id: 10)
      user.update(name: 'Alice')
      medium
      A. No error, code works fine
      B. find_by should be find to work
      C. find_by returns nil if no record found, so calling update on nil causes error
      D. update method does not accept hash arguments

      Solution

      1. Step 1: Understand find_by behavior

        find_by returns nil if no matching record is found.
      2. Step 2: Check method call on nil

        Calling update on nil causes a NoMethodError because nil has no update method.
      3. Final Answer:

        find_by returns nil if no record found, so calling update on nil causes error -> Option C
      4. Quick Check:

        Nil object has no update method [OK]
      Hint: Check if find_by returns nil before calling methods [OK]
      Common Mistakes:
      • Assuming find_by always returns a record
      • Thinking update cannot take hash arguments
      • Confusing find and find_by behavior
      5. You want to update multiple users' status to 'active' only if their current status is 'pending'. Which Rails code correctly does this in one query?
      hard
      A. User.where(status: 'pending').update_all(status: 'active')
      B. User.update_all(status: 'active').where(status: 'pending')
      C. User.find_each { |u| u.update(status: 'active') if u.status == 'pending' }
      D. User.all.update(status: 'active') if User.status == 'pending'

      Solution

      1. Step 1: Filter users with status 'pending'

        User.where(status: 'pending') selects only users with 'pending' status.
      2. Step 2: Update all selected users at once

        update_all(status: 'active') updates the status for all filtered users in one database query.
      3. Final Answer:

        User.where(status: 'pending').update_all(status: 'active') -> Option A
      4. Quick Check:

        Filter then update_all = efficient bulk update [OK]
      Hint: Use where to filter, then update_all to bulk update [OK]
      Common Mistakes:
      • Calling update_all before filtering
      • Using find_each which is slower for bulk updates
      • Trying to chain where after update_all
      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