验证失败时将关联属性设置为nil

时间:2015-09-11 22:12:03

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

在表单提交上,如果验证失败,我想将关联属性设置为nil。在rails中有一个简单的方法吗?我认为存在一种方法,但我找不到方法。

2 个答案:

答案 0 :(得分:0)

您可以执行after_validation回调...

class Model < ActiveRecord::Base

  after_validation :set_failed_attributes_to_nil

  def set_failed_attributes_to_nil
    errors.messages.each { |k, _| write_attribute(k, nil) }
  end

end

答案 1 :(得分:0)

after_validation :remove_bad_attributes 

def  remove_bad_attributes
    if errors.any?
        errors.keys.each do |err|
            assign_attributes(err => nil)
        end
    end
end

以上对我来说很好。