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
...