我必须导入大的CSV表格。我的代码搜索数据库中的现有对象,否则我创建一个新实例。
我希望在必须验证我的模型之后添加自定义错误消息。
这是我的代码示例:
def customer_validate
p = Customer.new(customer_params)
p.errors.add(:name, "here my error message")
p.valid?
return p
end
问题: p.valid后,所有错误都会丢失?如何组合自定义错误消息并且有效?消息?
答案 0 :(得分:1)
你不能。运行valid?
时,将清除所有现有错误。有一些可能的解决方法。
一种简单的可能性是切换订单。
def customer_validate
c = Customer.new(customer_params)
c.valid?
c.errors.add(:name, "here my error message")
c
end
您可以使用
检查客户是否有效customer = customer_validate
customer.errors.any?
另一种方法是将错误附加到临时客户对象,在主对象上运行valid?
,然后合并两个错误列表。
作为旁注,请不要将变量命名为p
,因为p
是Ruby中的一种方法,您最终会将其隐藏起来。
答案 1 :(得分:0)
或者你可以像下面这样使用after_validation。
after_validation do
errors.add(:name, 'abc')
end