当列为nil时,默认为空数组

时间:2015-12-29 21:58:14

标签: ruby-on-rails ruby-on-rails-4

就像标题所说,我想将模型的默认值设置为空数组,只要它为零。有没有理想的方法来做到这一点?这些字段在db中序列化,应该始终是一个数组。

我正在考虑做类似的事情:

before_validation :set_defaults

def set_defaults
    some_field ||= []
    other_field ||= []
end

1 个答案:

答案 0 :(得分:0)

为什么你希望将一个空数组作为默认列值?将空数组分配给DB列的值是不正确的,因为它必须专门序列化。而是在模型中定义方法,它将返回特定列的空数组:

def some_field
   read_attribute(:some_field) || []
end

def other_field
   read_attribute(:other_field) || []
end

更好的方法是定义不在模型中但在序列化器或装饰器中的方法。