Ruby on Rails 验证如果一个属性为真则不能为空否则允许为空
Ruby on Rails validation if one attribute is true then cannot be blank else allow blank
我有真假问卷。如果单击 true,我希望用户给出解释。
例如:
Do you like pineapple in your pizza?
(0)True ( )False
If true, please explain:
______________________________
| |
| |
| |
| |
------------------------------
在我的验证中,我想检查是否为 false 允许空白,如果为 true 则不允许解释为空白。
这是我迄今为止为模型验证所做的尝试:
validates_presence_of :is_pinnapple_pizza
validates :pinnapple_pizza_explanation, presence: {if: :is_pinnapple_pizza?}
问题是如果我点击 false,当回答 false 时 returns 问题中出现 "can't be blank" 错误。
Do you like pineapple in your pizza?
( )True (0)False
can't be blank
If true, please explain:
______________________________
| |
| |
| |
| |
------------------------------
提前致谢。
您的代码有问题。你应该使用
#use inclusion to validate boolean field, because false.blank? => true
validates :is_pinnaple_pizza, inclusion: { in: [true, false] }
validates :pinnapple_pizza_explanation, presence: true, if: :is_pinnapple_pizza?
我最初以为是我的文本区域出现了错误,但我注意到当您 select 为 false 时单选按钮会导致问题。我改为添加了自己的自定义验证,它正在运行
validate :validate_pizza
validates :pinnapple_pizza_explanation, presence: {if: :is_pinnapple_pizza?}
private
def validate_pizza
if is_pinnapple_pizza.nil?
errors.add(:is_pinnapple_pizza, "PLEASE SELECT YES OR NO")
end
end
我有真假问卷。如果单击 true,我希望用户给出解释。
例如:
Do you like pineapple in your pizza?
(0)True ( )False
If true, please explain:
______________________________
| |
| |
| |
| |
------------------------------
在我的验证中,我想检查是否为 false 允许空白,如果为 true 则不允许解释为空白。
这是我迄今为止为模型验证所做的尝试:
validates_presence_of :is_pinnapple_pizza
validates :pinnapple_pizza_explanation, presence: {if: :is_pinnapple_pizza?}
问题是如果我点击 false,当回答 false 时 returns 问题中出现 "can't be blank" 错误。
Do you like pineapple in your pizza?
( )True (0)False
can't be blank
If true, please explain:
______________________________
| |
| |
| |
| |
------------------------------
提前致谢。
您的代码有问题。你应该使用
#use inclusion to validate boolean field, because false.blank? => true
validates :is_pinnaple_pizza, inclusion: { in: [true, false] }
validates :pinnapple_pizza_explanation, presence: true, if: :is_pinnapple_pizza?
我最初以为是我的文本区域出现了错误,但我注意到当您 select 为 false 时单选按钮会导致问题。我改为添加了自己的自定义验证,它正在运行
validate :validate_pizza
validates :pinnapple_pizza_explanation, presence: {if: :is_pinnapple_pizza?}
private
def validate_pizza
if is_pinnapple_pizza.nil?
errors.add(:is_pinnapple_pizza, "PLEASE SELECT YES OR NO")
end
end