就像标题所说,我想将模型的默认值设置为空数组,只要它为零。有没有理想的方法来做到这一点?这些字段在db中序列化,应该始终是一个数组。
我正在考虑做类似的事情:
before_validation :set_defaults
def set_defaults
some_field ||= []
other_field ||= []
end
答案 0 :(得分:0)
为什么你希望将一个空数组作为默认列值?将空数组分配给DB列的值是不正确的,因为它必须专门序列化。而是在模型中定义方法,它将返回特定列的空数组:
def some_field
read_attribute(:some_field) || []
end
def other_field
read_attribute(:other_field) || []
end
但更好的方法是定义不在模型中但在序列化器或装饰器中的方法。