Есть ли простой способ (т.е. конфигурация) заставить ActiveRecord сохранять пустые строки как NULL в БД (если столбец позволяет)?
Причина в том, что если у вас есть строковый столбец в БД, допускающий NULL, без значения по умолчанию, новые записи, которые не устанавливают это значение, будут содержать NULL, тогда как новые записи, которые устанавливают это значение в пустую строку, не будут NULL, что приводит к несоответствиям в базе данных, которых я бы хотел избежать.
Прямо сейчас я делаю что-то подобное в своих моделях:
before_save :set_nil
def set_nil
[:foo, :bar].each do |att|
self[att] = nil if self[att].blank?
end
end
что работает, но не очень эффективно или СУХОЙ. Я мог бы выделить это в метод и смешать с ActiveRecord, но прежде чем я пойду по этому пути, я хотел бы знать, есть ли уже способ сделать это.