Sha256: c79112f48faaabdd907e76f2f906e4750fb2183c37a3c72c260be54440f933d7
Contents?: true
Size: 733 Bytes
Versions: 1
Compression:
Stored size: 733 Bytes
Contents
require 'active_model' module LinkedVocabs::Validators class PropertyValidator < ActiveModel::EachValidator def validate_each(record, attribute, values) values.each do |v| unless v.try(:in_vocab?) term = v.try(:rdf_subject) || v vocabularies = record.class.properties[attribute.to_s].class_name.vocabularies.keys record.errors.add :base, "value `#{term} for `#{attribute}` property is not a term in a controlled vocabulary #{vocabularies.join(', ')}" end end end end end module ActiveModel::Validations::HelperMethods def validates_vocabulary_of(*attr_names) validates_with LinkedVocabs::Validators::PropertyValidator, :attributes => attr_names end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
linked_vocabs-0.2.0 | lib/linked_vocabs/validators/property_validator.rb |