Да, здесь будет применяться полиморфная ассоциация, и это будет хорошей практикой. Тем не менее, я думаю, что у вас должна быть новая модель, такая как DogMedia или около того, это будет полиморфная ассоциация.
Таким образом, у пользователя есть собака, а у собаки много DogMedias. DogMedia - это полиморфная ассоциация, которая может быть фото, видео или чем-то еще, что вам нравится:)
Вы можете использовать многие из них, чтобы напрямую получить dogmedia для собаки пользователя. Да. Что-то вроде:
User has many dog_medias through dog (plain language)
или просто пройти через собаку:
user.dog.dog_media
Если вы сделаете последнее, вы даже можете создать Media вместо класса DogMedia, создать делегат и выполнить аккуратное:
user.dog_media
напрямую (Закон Деметры: http://en.wikipedia.org/wiki/Law_of_Demeter)