Я работаю над своим первым Rails-приложением (в этом смысле моим первым Ruby-приложением), и у меня есть вопрос передовой практики о наследовании. Я должен иметь возможность загружать физические носители, и я хочу хранить физические свойства отдельно в базе данных, чтобы некоторые атрибуты можно было запрашивать за пределами приложения так же легко, как и внутри. Для управления этим у меня есть таблица images
Таблица binaries
. Первый хранит метаданные, относящиеся к изображениям, конечно, в то время как последний хранит метаданные физического файла, которые будут применяться к ряду типов файлов. Как только мой подход укрепится, я добавлю таблицу swfs
, таблицу videos
и, возможно, другие.
На данный момент у меня класс BinaryObserver
захватывает обратный вызов before_create
изображения и загружает физический файл - двоичный файл. Это работает нормально, но мне интересно о других подходах. В частности, мне интересно, если бы я не смог (и не должен) установить базовую модель наследования, в которой Binary
расширяет ActiveRecord::Base
, а Image
расширяет Binary
.
В нынешнем виде Image belongs_to Binary
и Binary has_one Image
. Поскольку существует очевидная связь is-a
, следует ли мне использовать наследование? Рельсы даже поддерживают такую вещь при взаимодействии с базой данных? Это может быть лучшим способом уменьшить объем работы, необходимой для поддержки нового типа файлов.
Буду признателен за любые мысли или предложения по этому поводу. Я экспериментирую с языком и структурой, поэтому я пытаюсь изучить лучшие практики, прежде чем углубиться.
Спасибо.