Ruby on rails 如果存在条件,则字段的Rails模型验证值
我有一个名为Ticked的模型,在这个模型中我有几个字段,但我需要处理两个字段(official[bool]和code[string]) 我需要确保如果代码的值为“AP”或“CP”,则官方值不能更改为true。如果代码不同,则官方值可以为true或false 我该怎么做?我一直在找这个,但什么也找不到 编辑: 我试过这个:Ruby on rails 如果存在条件,则字段的Rails模型验证值,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个名为Ticked的模型,在这个模型中我有几个字段,但我需要处理两个字段(official[bool]和code[string]) 我需要确保如果代码的值为“AP”或“CP”,则官方值不能更改为true。如果代码不同,则官方值可以为true或false 我该怎么做?我一直在找这个,但什么也找不到 编辑: 我试过这个: def validate_codes if official && ["AP", "CP"].includ
def validate_codes
if official && ["AP", "CP"].include? code
errors.add(:official, 'cant be true because of the codes')
end
end
但是不起作用
编辑2:
我这样修改代码,现在方法不会抛出错误,但我可以毫无问题地更新模型
def validate_codes
if self.official && ( self.code == "AP" || self.code == "CP")
self.errors.add(:official, "Can't be official because of its code")
end
end
下面是我要做的:
validates :official, inclusion: [ false ], if: Proc.new{|i| ["AP", "CP"].include?(i.code) }
这将强制
self.official
为false
如果代码是AP
或CP
你看过吗?@FabianWinkler我读过,但我找不到合适的使用方法,我添加了我的代码,你能检查一下吗?@Stefan是的,对不起,哈哈,这是个打字错误谢谢!