2014-02-21 2 views
0

Я работаю над проектом rails в модели моих пользователей. У меня есть куча необязательных атрибутов для пользователя. Если пользователь добавляет атрибут, он сохраняет его в базу данных, а затем удаляет его позже, он сохраняется в базе данных как пустая строка, а не нуль. Есть ли способ установить значение обратно в nil, если пользователь решает удалить атрибут из своего профиля, не имея необходимости вручную его выполнять в контроллере?Параметры настройки Rails для nil после удаления

ответ

0

Я видел это для текстовых полей, но я полагаю, что это могло произойти для других значений String и т. Д. Одним из подходов было бы переопределить setter для вашего необязательного атрибута (ов). Такие, как:

# Do this for each attribute: 
def my_attr=(value) 
    super(value.presence) 
end 

Предполагая, что вы устанавливаете дополнительные атрибуты в контроллере прямой вверх или с использованием Rails, массовое назначения ... это должно убедиться, что строка не blank? перед установкой внутренних атрибутов (и если он будет установлен вместо этого атрибута nil).

Другой вариант - установить способ before_save для проверки и установки значений blank? в нуль. Но я думаю, что переопределение атрибута будет предпочтительнее, поскольку оно более явное.

Смежные вопросы