Sha256: 97515f3caed191da04d6f4c238af8c5a075716ffadfefa8179fc850f19262871
Contents?: true
Size: 1.14 KB
Versions: 7
Compression:
Stored size: 1.14 KB
Contents
module Devise module Orm module DataMapper module ActiveModelCompatibility # include ActiveModel::Validations does not make save check valid?. # This may not be the best solution, but it seems to work. Note that # Compatibility is included after this module; its #save method handles # the :validate => false option. def save(*args) retval = valid? && super(*args) assert_save_successful(:save, retval) retval end end module ActiveModelUniquenessCompatibility def validates_uniqueness_of(*fields) validates_with UniquenessValidator, _merge_attributes(fields) end end class UniquenessValidator < ActiveModel::EachValidator def validate_each(target, attribute, value) resource = ::DataMapper.repository(target.repository.name) { target.model.first(attribute => value) } if resource.nil? || (target.saved? && resource.key == target.key) return true else target.errors.add(attribute, :taken) return false end end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems