1

两种调用都确保模型无效。

有什么功能上的区别吗?两者之间是否存在普遍的最佳实践?

4

3 回答 3

2

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

所以我想答案可能是否定的。

于 2012-05-17T17:14:19.327 回答
0

对开发人员来说只是一个“结冰”:) 与:

flag = true

if not flag
  ...
end

unless flag
  ...
end
于 2012-05-17T16:12:08.083 回答
0

我知道没有功能差异。

“最佳实践”是使用给定规范最具可读性和交流性的任何内容。

于 2012-05-17T15:16:11.217 回答