Active Storage is a built-in Rails framework that helps you upload, store, and attach files like images to your models easily.
Click to reveal answer
beginner
How do you attach an image to a model using Active Storage?
You add has_one_attached :image or has_many_attached :images in your model, then use model.image.attach(io: file, filename: 'name.jpg') to attach the file.
Click to reveal answer
intermediate
What is the purpose of variants in Active Storage?
Variants let you create resized or transformed versions of images on the fly, like thumbnails, without changing the original file.
Click to reveal answer
intermediate
Which gem does Rails use by default for image processing with Active Storage?
Rails uses the image_processing gem, which wraps libraries like MiniMagick or libvips to handle image resizing and transformations.
Click to reveal answer
advanced
How can you serve uploaded files securely in Rails?
Active Storage uses signed, temporary URLs to serve files securely, preventing unauthorized access and allowing control over file expiration.
Click to reveal answer
Which method attaches a single file to a Rails model using Active Storage?
Afile_upload
Battach_file
Chas_one_attached
Dadd_attachment
✗ Incorrect
The method has_one_attached declares a one-to-one attachment for a model.
What does the variant method do in Active Storage?
ACreates a resized or transformed image version
BConverts files to PDF
CDeletes the original image
DUploads a new file variant
✗ Incorrect
Variants create resized or transformed versions of images without changing the original.
Which gem is commonly used by Rails for image processing tasks?
Aimage_processing
Bcarrierwave
Cpaperclip
Dmini_magick
✗ Incorrect
Rails uses the image_processing gem, which can use MiniMagick internally.
How does Active Storage ensure secure file access?
ABy encrypting files on disk
BUsing signed, temporary URLs
CBy storing files in a private folder
DBy requiring user login for every file
✗ Incorrect
Active Storage generates signed URLs that expire to control access.
Which declaration allows attaching multiple files to a model?
Amultiple_files
Bhas_one_attached
Cattach_many
Dhas_many_attached
✗ Incorrect
has_many_attached lets a model hold many attached files.
Explain how to set up image uploading in a Rails model using Active Storage.
Think about model declarations and attaching files.
You got /4 concepts.
Describe how Active Storage handles image resizing and why it is useful.
Consider how to show smaller images without losing originals.
You got /4 concepts.
Practice
(1/5)
1. Which method in Rails is used to associate a single file attachment with a model?
easy
A. has_many_attached
B. has_one_attached
C. attach_file
D. file_attachment
Solution
Step 1: Understand Rails Active Storage associations
Rails uses has_one_attached to link a single file to a model and has_many_attached for multiple files.
Step 2: Identify the correct method for single file
Since the question asks for a single file, has_one_attached is the correct method.
Final Answer:
has_one_attached -> Option B
Quick Check:
Single file attachment = has_one_attached [OK]
Hint: Single file uses has_one_attached, multiple files use has_many_attached [OK]
Common Mistakes:
Confusing has_one_attached with has_many_attached
Using non-existent methods like attach_file
Thinking file_attachment is a Rails method
2. Which of the following is the correct syntax to attach a file to a model instance in a Rails controller?
easy
A. user.avatar.attach(params[:avatar])
B. user.attach_avatar(params[:avatar])
C. user.avatar = params[:avatar]
D. user.attach_file(:avatar, params[:avatar])
Solution
Step 1: Recall the Active Storage attach syntax
To attach a file, you call attach on the attachment association, passing the file parameter.
Step 2: Match the syntax to the options
user.avatar.attach(params[:avatar]) uses user.avatar.attach(params[:avatar]), which is the correct Rails syntax.
Final Answer:
user.avatar.attach(params[:avatar]) -> Option A
Quick Check:
Attach file with .attach method on association [OK]
Hint: Use .attach on the attachment association to add files [OK]
Common Mistakes:
Using non-existent methods like attach_avatar
Assigning file directly to association
Trying to call attach_file which is not a Rails method
3. Given the following code in a Rails view:
<% if @user.avatar.attached? %>
<%= image_tag @user.avatar %>
<% else %>
<p>No avatar uploaded</p>
<% end %>
What will be displayed if the user has not uploaded an avatar?
medium
A. An error because avatar is nil
B. The image tag with a broken image
C. The text 'No avatar uploaded'
D. Nothing will be displayed
Solution
Step 1: Understand the attached? method
The attached? method returns true if a file is attached, false otherwise.
Step 2: Analyze the conditional rendering
If no avatar is attached, the else block runs, showing the text 'No avatar uploaded'.
Final Answer:
The text 'No avatar uploaded' -> Option C
Quick Check:
attached? false shows else text [OK]
Hint: Check attached? before showing file to avoid errors [OK]
Common Mistakes:
Assuming image_tag works with nil attachment
Expecting no output instead of else block
Confusing attached? with presence of file path
4. Consider this controller code snippet:
def update
@user = User.find(params[:id])
@user.avatar.attach(params[:avatar])
if @user.save
redirect_to @user
else
render :edit
end
end
What is the main issue with this code when attaching a file?
medium
A. Using attach before save causes an error
B. params[:avatar] should be inside a hash like avatar: params[:avatar]
C. attach should be called only after @user.save
D. attach does not save the file automatically
Solution
Step 1: Understand attach behavior
The attach method links the file to the model but does not save the model automatically.
Step 2: Analyze the save call
The code calls @user.save after attaching, which saves the model and the attachment together correctly.
Step 3: Identify the issue
attach does not save the file automatically correctly states that attach alone does not save the file; save must be called to persist changes.
Final Answer:
attach does not save the file automatically -> Option D
Quick Check:
attach links file, save persists it [OK]
Hint: Remember to call save after attach to persist files [OK]
Common Mistakes:
Thinking attach saves file immediately
Calling attach after save instead of before
Passing params incorrectly to attach
5. You want to allow users to upload multiple images for a product in Rails. Which combination of model and view code correctly supports this?