两种调用都确保模型无效。
有什么功能上的区别吗?两者之间是否存在普遍的最佳实践?
be_...
rspec匹配器没有魔法。如果匹配器未在 rspec 中定义,它只会调用be_
带有?
符号的任何方法名称。因此be_valid
调用valid?
在“activerecord/lib/active_record/validations.rb”中定义的方法和invalid?
在“activemodel/lib/active_model/validations.rb”中定义的“be_invalid”调用。这是后者的源代码:
def invalid?(context = nil)
!valid?(context)
end
所以我想答案可能是否定的。
对开发人员来说只是一个“结冰”:) 与:
flag = true
if not flag
...
end
unless flag
...
end
我知道没有功能差异。
“最佳实践”是使用给定规范最具可读性和交流性的任何内容。