Ассоциации столбцов наследования одной таблицы (STI) - PullRequest
0 голосов
/ 21 июля 2009

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

1 Ответ

1 голос
/ 21 июля 2009

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

...