验证失败时将关联属性设置为 nil
Setting an associated attribute to nil when a validation fails
在提交表单时,如果验证失败,我想将相关属性设置为 nil。在 rails 中有没有简单的方法来做到这一点?我认为存在一种方法,但我找不到一个。
你可以做一个 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
after_validation :remove_bad_attributes
def remove_bad_attributes
if errors.any?
errors.keys.each do |err|
assign_attributes(err => nil)
end
end
end
以上对我来说效果很好。
在提交表单时,如果验证失败,我想将相关属性设置为 nil。在 rails 中有没有简单的方法来做到这一点?我认为存在一种方法,但我找不到一个。
你可以做一个 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
after_validation :remove_bad_attributes
def remove_bad_attributes
if errors.any?
errors.keys.each do |err|
assign_attributes(err => nil)
end
end
end
以上对我来说效果很好。