Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如果存在条件,则字段的Rails模型验证值_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如果存在条件,则字段的Rails模型验证值

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

我有一个名为Ticked的模型,在这个模型中我有几个字段,但我需要处理两个字段(official[bool]和code[string])

我需要确保如果代码的值为“AP”或“CP”,则官方值不能更改为true。如果代码不同,则官方值可以为true或false

我该怎么做?我一直在找这个,但什么也找不到

编辑:

我试过这个:

  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是的,对不起,哈哈,这是个打字错误谢谢!