activerecord: значение базы данных по умолчанию не вступает в силу - PullRequest
1 голос
/ 22 марта 2012

У меня есть форма для заполнения сведений об ученике, которая добавит значение в таблицу с именем 'student'.

В этой таблице у меня есть столбец с именем 'ctime', который имеет значение базы данных по умолчанию.

структура столбца

ctime |отметка времени без часового пояса |теперь не по умолчанию ()

Таким образом, при добавлении нового студента я не дал значение столбцу ctime в форме, но это привело к ошибке "PG :: Error: ERROR: null valueв столбце "ctime" нарушается ненулевое ограничение ".

Мой вопрос: почему это приводит к ошибке, даже если она имеет значение по умолчанию в базе данных?1017 *

Заранее спасибо.

1 Ответ

0 голосов
/ 22 марта 2012

Если вы определили столбец с некоторым статическим значением по умолчанию в схеме таблицы, соответствующее свойство в экземпляре AR будет автоматически иметь такое значение после создания экземпляра.Проверьте, правильно ли вы назначаете значение по умолчанию.

Вы можете установить опцию по умолчанию для столбца в миграции ИЛИ Вы можете использовать обратный вызов, before_save

class Model < ActiveRecord::Base
  before_save :default_values
  def default_values
    self.status ||= 'value'
  end
end

Или выдаже используйте метод after_initialize для установки значений по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...