我有一个copy
方法复制一个对象,然后更改它的一些属性。保存时,它会在ActiveRecord::RecordInvalid
上出现Name
错误。但是,name属性没有唯一性约束,因此不应该失败。
此外,名称HAS已被更改,因此它是唯一的,并且调试方法表明情况就是这样。如何在没有唯一性约束的字段上获取此错误,并且IS是唯一的?
我已经看到了一些与RSpec有关的问题,但这不是在测试环境中,因此它不是数据库问题。
我意识到我没有发布代码 - 我正在寻找可能导致类似内容的一般答案。
答案 0 :(得分:0)
如果您可以显示您的代码以及Rails版本,那么查明实际问题会容易得多。但是,如果您正在寻找一般性答案,一般的答案是RecordInvalid
是由爆炸方法引发的,主要是save!
和validate!
以及其他方法,如create!
那样调用这两个方法},update!
。验证失败时,这些方法会引发此异常。并且验证可能会因数百万个原因而失败,这些原因取决于您的验证设置。
当在无效的关联记录上调用这些方法时,也会引发此异常。
我还认为,当您定义自己的验证并返回false时,验证可能会失败。