← Back to Upcase

Modelling image/media files in a Rails app

(David Chmura) #1

Anyone up for talking about how to design a model for image uploads? I am exploring ways to model image/media uploads (in a Rails context). I want to do it in a flexible manner though, such that images can be associated with multiple resources. (I think the most challenging way to think about this is a slide/presentation context, where a single slide can have multiple images, but the image doesn’t belong to a slide per se, (the same image can be associated with multiple slides, slideshows, or even appear on a single slide multiple times. i don’t have a specific product in mind…but I am enjoying the thought experiment.

I would love to explore how different projects have approached this sort of problem.



(Nathan) #3

I know this is an old question, but since you didn’t get any replies, I thought I would chime in.

In your slides example, it’s clear that a Slide can be associated with more than one Image, and Image can be associated with more than Slide. As a result, you need a many-to-many relationship.

In Rails, many-to-many relationships are often implemented as a “has_many through” relationship, which links one record to another via an intermediate record.

As an example, you could have a SlideImageAssignment model, which connects a given Slide to a given Image.

class SlideImageAssignment < ActiveRecord::Base
  belongs_to :slide
  belongs_to :image

class Slide < ActiveRecord::Base
  has_many :slide_image_assignments
  has_many :images, through: :slide_image_assignments

For each image you want to associate with a slide, you create a separate SlideImageAssignment record.