如何在Rails中有条件地应用验证?

时间:2015-07-09 14:00:45

标签: ruby-on-rails

my_file.filename

注意:在我的测试模型中,我添加了验证和回调。我只有在条件匹配时才需要应用这些验证。

我可以使用%25D1%2581%25D0%25BA%25D1%2580%25D0%25B8%25D0%25BD%25D1%2588%25D0%25BE%25D1%2582吗?

1 个答案:

答案 0 :(得分:3)

您可以传递:if选项来执行此操作:

validates_presence_of :password, :if => :something_is_true?

:something_is_true实际上是您方法中可以描述逻辑的方法。

class Test < ActiveRecord::Base # Though I would never name it 'Test'
  validates_presence_of :password, :if => :should_validate_password?

  def should_validate_password
    # define your logic here
    # at the end, it should return 'true' or 'false'
  end
end

如果您想要验证实例的方法属于该实例,那么您可以将该方法作为字符串传递,如下所示:

validates_presence_of :password, if: 'admin?'

它会在当前实例上调用admin?,如果它返回true,它将验证密码的存在,反之亦然。