删除后将Rails参数设置为nil

时间:2014-02-21 03:44:08

标签: ruby-on-rails ruby

我在我的用户模型中处理rails项目我有一堆用户可选属性。如果用户添加属性将其保存到数据库,则稍后将其删除,将其作为空字符串保存到数据库,而不是nil。如果用户决定从其配置文件中删除属性,有没有办法将值设置回nil,而不必在控制器中手动执行该操作?

1 个答案:

答案 0 :(得分:0)

我已经在文本字段中看到过这种情况,但我认为它可能会发生在其他字符串中,等等。一种方法是覆盖可选属性的setter。如:

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

假设您在控制器中直接设置可选属性或使用Rails的批量分配...这应该确保在设置内部属性之前字符串不是blank?(如果是它会将属性设置为nil

另一个选项是设置before_save方法来检查并将任何blank?值设置为nil。但我认为属性方法覆盖是首选,因为它更明确。