Ассоциации столбцов с наследованием одной таблицы (STI)

StackOverflow https://stackoverflow.com/questions/1160285

Вопрос

При использовании наследования одной таблицы нужно ли быть осторожным, чтобы не заполнить столбцы, специфичные для разных моделей?Есть ли способ указать, какие столбцы использует каждая модель?

Это было полезно?

Решение

Что касается 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, вероятно, не лучшая модель наследования.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top