如果db列为NULL,则Rails未编辑的表单字段

时间:2016-07-01 15:06:15

标签: ruby-on-rails-4 rails-activerecord form-for

让我试着在这里提出一个简单的例子:

我有db table Orders和一列delivery_address

<%= form_for @order do |f| %>    
  <%= f.text_field :delivery_address %> 
<% end %>

如果表单未进行任何更改,则在提交表单后,Orders.delivery_address的值会从NULL更改为空值。

我设置了一个警告通知,如下所示:

test@gmail.com changed delivery_address to .

任何建议如何使用rails update操作阻止将具有NULL值的db字段更新为空。

1 个答案:

答案 0 :(得分:1)

您可以在模型中执行以下操作:

# In the Order model
before_validation do
  self.delivery_address = nil if delivery_address.blank?
end

我也真的不喜欢这种情况发生,但另一种选择是在控制器级别上进行