Rails 验证:如果不起作用

dva*_*erb 5 validation ruby-on-rails ruby-on-rails-3

我正在尝试根据 Rails 文档中所示的简单条件来验证模型属性。我有一个带有布尔“show_birthday”属性的测验模型,以及一个带有生日属性的参与者模型。这是我的代码的相关部分:

class Participant < ActiveRecord::Base
    belongs_to :quiz
    validates :birthday, presence: true, :if => :has_birthday?

    def has_birthday?
        quiz.show_birthday?
    end
end
Run Code Online (Sandbox Code Playgroud)

如果我删除 if 条件,验证会起作用,但即使我更改 has_birthday? 内的部分,验证也不起作用。方法为“真”。关于为什么这不起作用的任何想法?