Rails: Установить пустую строку в NULL в базе данных

Есть ли простой способ (т.е. конфигурация) заставить 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, но прежде чем я пойду по этому пути, я хотел бы знать, есть ли уже способ сделать это.

46
задан Thilo 26 August 2011 в 09:10
поделиться