Ассоциации столбцов с наследованием одной таблицы (STI)
-
18-09-2019 - |
Вопрос
При использовании наследования одной таблицы нужно ли быть осторожным, чтобы не заполнить столбцы, специфичные для разных моделей?Есть ли способ указать, какие столбцы использует каждая модель?
Решение
Что касается Rails, каждый столбец может быть установлен в каждом подклассе.Вы можете добавить логику в модели подклассов, чтобы предотвратить установку определенных полей, но автоматического способа сделать это не существует.Вероятно, вы могли бы реализовать, что у него есть before_save
фильтр.
class MySubModel < MyModel
UNUSED_FIELDS = %w{ field_x field_y field_z }
def before_save
UNUSED_FIELDS.each {|f| self.send("#{f}=", nil)}
end
end
Хотя если у вас много столбцов, которые используются только одним подклассом, STI, вероятно, не лучшая модель наследования.
Не связан с StackOverflow