Rails collection_select:选中“blank”选项时保存null而不是空字符串
我在表单中有一个选择框的代码如下:
它显示以下选择选项:
我注意到当选择blank
选项时,实际保存在数据库中的是一个空字符串: ''
选择blank
选项时,我不想保存空字符串。 相反:我想保存null
。
我试图覆盖rails模型中的setter,但它不起作用:
def text_value=(value) write_attribute(:name, nil) and return if value.empty? super end
我如何在应用程序级别执行此操作? 我知道我可以在数据库级别指定一个默认值,但似乎这可能更适合在应用程序级别。
这有效:
def text_value=(value) if value.empty? write_attribute(:name, nil) else super end end
如果你想为多个属性和/或模型做这个,那就有一个gem: https : //github.com/rubiety/nilify_blanks