RSpecでvalid? #=> falseを期待したくてerrors.addするみたいなことやってたんだけど
ずっとtrueなのよ。もうなんなの!と思うじゃない
そこで、valid?何やってるか見に行くじゃない。そしたらなんなの!
activemodel-3.2.9/lib/active_model/validations.rb
189 # Runs all the specified validations and returns true if no errors were added 190 # otherwise false. Context can optionally be supplied to define which callbacks 191 # to test against (the context is defined on the validations using :on). 192 def valid?(context = nil) 193 current_context, self.validation_context = validation_context, context 194 errors.clear 195 run_validations! 196 ensure 197 self.validation_context = current_context 198 end
めっちゃclearしてんじゃん。clearしてからvalidationしてんじゃん。
というわけでちゃんとコンテキストをinvalidにしましょう