Rails为什么要调用.valid?删除我的错误消息

时间:2016-07-07 18:47:24

标签: ruby-on-rails ruby validation activemodel

在我的ActiveModel::Validations#valid?实例上调用@item正在删除我的错误消息。最好以示例的方式显示。

[1] pry(#<ChangeObjectsController>)> @item.errors.add(:new_error, "new error has occurred")
=> ["new error has occurred"]
[2] pry(#<ChangeObjectsController>)> @item.errors.full_messages
=> ["Connection error has occurred", "New error new error has occurred"]
[3] pry(#<ChangeObjectsController>)> @item.valid?
=> true
[4] pry(#<ChangeObjectsController>)> @item.errors.full_messages
=> []

在我的模型类中,我包含验证库(注意它不会继承自 ActiveRecord::Base):

  include ActiveModel::Validations
  extend ActiveModel::Naming

以这种方式添加错误消息: 任何人都可以澄清这个问题吗?例如,这是期望的行为,我使用不正确吗?

1 个答案:

答案 0 :(得分:2)

这是正常行为。如果valid?返回true,则会有不一致但有错误消息。您可以在rails source中看到valid?明确清除错误消息。

添加错误消息的常规方法是通过验证,无论是内置还是自定义验证。