我在我的用户模型中处理rails项目我有一堆用户可选属性。如果用户添加属性将其保存到数据库,则稍后将其删除,将其作为空字符串保存到数据库,而不是nil。如果用户决定从其配置文件中删除属性,有没有办法将值设置回nil,而不必在控制器中手动执行该操作?
答案 0 :(得分:0)
我已经在文本字段中看到过这种情况,但我认为它可能会发生在其他字符串中,等等。一种方法是覆盖可选属性的setter。如:
# Do this for each attribute:
def my_attr=(value)
super(value.presence)
end
假设您在控制器中直接设置可选属性或使用Rails的批量分配...这应该确保在设置内部属性之前字符串不是blank?
(如果是它会将属性设置为nil
。
另一个选项是设置before_save
方法来检查并将任何blank?
值设置为nil。但我认为属性方法覆盖是首选,因为它更明确。