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

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

1 ответ

Решение

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

Другие вопросы по тегам