You can specify :if or :unless (not both!) using a string, symbol or even Proc. Seems to work for me. Also fixed one problem in existing tests. title_changed? and cost_changed? are not defined automatically so they must be stubbed. I also added tests for new functionality. It's tested only for present validators same as other existing tests.