Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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 4中数组的验证_Ruby On Rails - Fatal编程技术网

Ruby on rails rails 4中数组的验证

Ruby on rails rails 4中数组的验证,ruby-on-rails,Ruby On Rails,如何在数组元素上应用验证,使其产生不能为空的错误 validates :my_arr , presence: true 它将检查[“”].present?这将返回true。但我需要检查它的元素my\u arr.last 我在我的模型中实现了以下一个: 我已经尝试了很多其他选项,比如(allow\u blank:false排除等),我发现上面的一个是有效的,但我怀疑它是否符合rails标准。 根据rails标准/惯例,上述解决方案是否合适 等待良好的工作解决方案。您可以做的是在\u验证之

如何在数组元素上应用验证,使其产生不能为空的错误

    validates :my_arr , presence: true
它将检查
[“”].present?
这将返回
true
。但我需要检查它的元素
my\u arr.last

我在我的模型中实现了以下一个:

我已经尝试了很多其他选项,比如(
allow\u blank:false
排除
等),我发现上面的一个是有效的,但我怀疑它是否符合rails标准。

根据rails标准/惯例,上述解决方案是否合适


等待良好的工作解决方案。

您可以做的是在\u验证之前使用
回调并拒绝数组中的所有无效值。这样,您的正常验证就可以正常工作了

validates :presence_of_last_element
...

private
... 
def presence_of_last_element
  unless my_arr.last.present?
    errors.add(:my_arr, "should not contain empty elements") 
end
您可以像这样尝试:

validates :my_arr , presence: true

before_validation :reject_invalid_values_from_my_arr
...

=====================
= Protected methods =
=====================
protected
  def reject_invalid_values_from_my_arr  
    self.my_arr = my_arr.compact.reject{|value| value.blank?}
  end
...
validates :my_arr , presence: true

before_validation :reject_invalid_values_from_my_arr
...

=====================
= Protected methods =
=====================
protected
  def reject_invalid_values_from_my_arr  
    self.my_arr = my_arr.compact.reject{|value| value.blank?}
  end
...