Bird
Raised Fist0
Ruby on Railsframework~5 mins

File uploads with Active Storage in Ruby on Rails - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is Active Storage in Rails?
Active Storage is a built-in Rails library that makes it easy to upload files to cloud services or local disk and attach them to Active Record models.
Click to reveal answer
beginner
How do you attach a file to a model using Active Storage?
You use the `has_one_attached` or `has_many_attached` macro in the model, then assign a file to the attachment attribute, for example: `user.avatar.attach(params[:avatar])`.
Click to reveal answer
beginner
Which command sets up Active Storage in a Rails app?
Run `rails active_storage:install` to generate the necessary database tables, then run `rails db:migrate` to apply them.
Click to reveal answer
beginner
How can you display an uploaded image in a Rails view using Active Storage?
Use the `image_tag` helper with the attached file, for example: `<%= image_tag user.avatar %>` if `avatar` is attached.
Click to reveal answer
beginner
What is the difference between `has_one_attached` and `has_many_attached`?
`has_one_attached` allows attaching a single file to a model, while `has_many_attached` allows attaching multiple files.
Click to reveal answer
Which command do you run to create Active Storage tables in your database?
Arails active_storage:migrate
Brails generate model ActiveStorage
Crails db:create
Drails active_storage:install
How do you declare a single file attachment in a Rails model?
Ahas_one_attached :file
Bhas_many_attached :file
Cattach_one :file
Dattach_many :file
What method do you use to attach a file from a form to a model instance?
Amodel.file.attach(params[:file])
Bmodel.attach_file(params[:file])
Cmodel.file = params[:file]
Dmodel.attach(params[:file])
How can you show an attached image in a Rails view?
A<%= show_image model.file %>
B<%= image_tag model.file %>
C<%= display_image model.file %>
D<%= render_image model.file %>
Which Active Storage macro allows multiple files to be attached?
Aattach_all
Bhas_one_attached
Chas_many_attached
Dattach_many
Explain the steps to set up file uploads with Active Storage in a new Rails app.
Think about setup, model, controller, and view parts.
You got /5 concepts.
    Describe how you would attach and display multiple images for a product using Active Storage.
    Focus on multiple attachments and rendering them.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the purpose of has_one_attached in a Rails model when using Active Storage?
      easy
      A. To link a single uploaded file to a model instance
      B. To create a database table for storing files
      C. To validate the file type before upload
      D. To automatically resize uploaded images

      Solution

      1. Step 1: Understand Active Storage attachment macros

        The has_one_attached macro in a Rails model declares a one-to-one association between the model and a single uploaded file.
      2. Step 2: Differentiate from other options

        It does not create tables, validate file types, or resize images by itself; those are handled elsewhere.
      3. Final Answer:

        To link a single uploaded file to a model instance -> Option A
      4. Quick Check:

        has_one_attached = single file link [OK]
      Hint: Remember: has_one_attached means one file per model [OK]
      Common Mistakes:
      • Confusing has_one_attached with database table creation
      • Thinking it validates or processes files automatically
      • Mixing it up with has_many_attached for multiple files
      2. Which of the following is the correct way to add a file input field in a Rails form for uploading a file with Active Storage?
      easy
      A. <%= form.file_field :avatar %>
      B. <%= form.text_field :avatar %>
      C. <%= form.submit :avatar %>
      D. <%= form.select :avatar %>

      Solution

      1. Step 1: Identify the correct form helper for file uploads

        The file_field helper creates a file input allowing users to select files for upload.
      2. Step 2: Exclude other input types

        Text fields, submit buttons, and select dropdowns do not allow file selection.
      3. Final Answer:

        <%= form.file_field :avatar %> -> Option A
      4. Quick Check:

        file_field = file input [OK]
      Hint: Use file_field for file inputs in forms [OK]
      Common Mistakes:
      • Using text_field instead of file_field for uploads
      • Confusing submit button with file input
      • Using select dropdown for file selection
      3. Given the following model and form code, what will be the result after submitting a file?
      class User < ApplicationRecord
        has_one_attached :profile_pic
      end
      
      # In the form view:
      <%= form_with model: @user do |form| %>
        <%= form.file_field :profile_pic %>
        <%= form.submit %>
      <% end %>
      medium
      A. The file will be ignored because has_one_attached is missing
      B. The uploaded file will be attached to the user's profile_pic
      C. The form will raise a syntax error due to missing multipart option
      D. The file will be saved as a string in the profile_pic column

      Solution

      1. Step 1: Check model attachment declaration

        The model uses has_one_attached :profile_pic, so it can attach one file to the user.
      2. Step 2: Understand form_with default behavior

        Rails 6+ automatically sets multipart for file uploads in form_with, so the file will be sent correctly.
      3. Final Answer:

        The uploaded file will be attached to the user's profile_pic -> Option B
      4. Quick Check:

        has_one_attached + file_field = file attached [OK]
      Hint: form_with sets multipart automatically for file_field [OK]
      Common Mistakes:
      • Assuming file is saved as string in DB column
      • Thinking multipart option must be manually added
      • Believing file is ignored without extra code
      4. Identify the error in this code snippet for attaching multiple files using Active Storage:
      class Product < ApplicationRecord
        has_one_attached :images
      end
      
      # In the form:
      <%= form.file_field :images, multiple: true %>
      medium
      A. The model should not declare any attachment for multiple files
      B. file_field does not support the multiple option
      C. The form must use text_field instead of file_field
      D. has_one_attached should be has_many_attached for multiple files

      Solution

      1. Step 1: Check model attachment type

        The model uses has_one_attached, which supports only one file, but the form allows multiple files.
      2. Step 2: Correct attachment macro for multiple files

        To attach multiple files, the model must use has_many_attached.
      3. Final Answer:

        has_one_attached should be has_many_attached for multiple files -> Option D
      4. Quick Check:

        Multiple files need has_many_attached [OK]
      Hint: Use has_many_attached for multiple file uploads [OK]
      Common Mistakes:
      • Using has_one_attached with multiple: true
      • Thinking file_field can't handle multiple files
      • Not declaring attachment in model for uploads
      5. You want to allow users to upload multiple images for a gallery and display thumbnails after upload. Which combination of model and view code correctly implements this with Active Storage?
      hard
      A. Model: has_many_attached :photos
      View: form.text_field :photos
      B. Model: has_one_attached :photos
      View: form.file_field :photos
      C. Model: has_many_attached :photos
      View: form.file_field :photos, multiple: true
      D. Model: has_one_attached :photos
      View: form.file_field :photos, multiple: true

      Solution

      1. Step 1: Choose correct model attachment for multiple files

        To attach multiple images, use has_many_attached :photos in the model.
      2. Step 2: Use file_field with multiple option in the form

        The form must use file_field :photos, multiple: true to allow selecting multiple files.
      3. Step 3: Display thumbnails after upload

        With this setup, you can iterate over @model.photos to show thumbnails.
      4. Final Answer:

        Model: has_many_attached :photos and View: form.file_field :photos, multiple: true -> Option C
      5. Quick Check:

        Multiple files need has_many_attached + multiple: true [OK]
      Hint: Multiple files = has_many_attached + file_field multiple: true [OK]
      Common Mistakes:
      • Using has_one_attached for multiple files
      • Omitting multiple: true in file_field
      • Using text_field instead of file_field for uploads
      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