Sha256: e8e288ea1480d1732cab2431f836213e52086537b37736990a2d984f81bb65d8
Contents?: true
Size: 819 Bytes
Versions: 187
Compression:
Stored size: 819 Bytes
Contents
class Lalala::Pages::ChildTypeValidator < ActiveModel::Validator def validate(record) types = normalize_types(options[:types], record) record.children.each do |child| valid = types.any? do |type| child.is_a?(type) end unless valid record.errors.add :base, "Invalid child type: #{child.class.to_s.humanize}" end end end private def normalize_types(types, record) if Proc === types types = types.call(record) end if types.nil? types = [] end unless Array === types raise ArgumentError, "ChildTypeValidator expected a list of class names for :types." end types = types.map do |type| if Class === type type else type.to_s.classify.constantize end end types end end
Version data entries
187 entries across 187 versions & 1 rubygems