我有一个Outlet模型,它包含一个允许两个值的包含验证,并且我会扩展以获得更多值。
我想知道是否还有一个方法可以返回我在包含验证中使用的值数组?
.directive('tabPanel', function () {
return {
scope: {
isOpen: '='
},
template: '<div><div tab-content is-open="isOpen"></div>',
//...
};
})
答案 0 :(得分:2)
ActiveModel
类方法validators_on
将返回给定字段的所有验证程序。 E.g:
Outlet.validators_on(:category)
#=> [#<ActiveRecord::Validations::PresenceValidator:0x007fd2350e4b88 ...>, #<ActiveModel::Validations::InclusionValidator:0x007fd23a872cd8 ...>]
它允许获得这样的包含值:
Outlet.validators_on(:category)
.find { |validator| validator.is_a?(ActiveModel::Validations::InclusionValidator) }
.options[:in]
它将返回一系列选项。
但实现相同目标的更简洁方法是提取类常量的选项:
class Outlet < ApplicationRecord
ALLOWED_CATEGORIES = %w(vent rant qualm).freeze
# ...
validates :category, inclusion: { in: ALLOWED_CATEGORIES }
end
然后通过Outlet::ALLOWED_CATEGORIES