Kat*_*han 17 validation ruby-on-rails ruby-on-rails-4 ruby-on-rails-5
在Rails上5.
我有一个Order带有description属性的模型.如果满足以下两个条件之一,我只想验证它的存在:如果当前步骤等于第一步或者如果require_validation等于true.
我可以根据以下一个条件轻松验证:
validates :description, presence: true, if: :first_step?
def first_step?
current_step == steps.first
end
Run Code Online (Sandbox Code Playgroud)
但我不知道如何添加另一个条件并验证其中一个是否属实.
就像是:
validates :description, presence: true, if: :first_step? || :require_validation
Run Code Online (Sandbox Code Playgroud)
谢谢!
Ste*_*zyn 30
您可以将lambda用于该if:子句并执行或条件.
validates :description, presence: true, if: -> {current_step == steps.first || require_validation}
Run Code Online (Sandbox Code Playgroud)
你能用一种方法包装吗?根据文件
:if - 指定要调用的方法,proc或字符串,以确定是否应该进行验证(例如,如果:: allow_validation,或者::proc.new {| user | user.signup_step> 2}).方法,proc或string应返回或计算为true或false值.
validates :description, presence: true, if: :some_validation_check
def some_validation_check
first_step? || require_validation
end
Run Code Online (Sandbox Code Playgroud)