module Sequel::Plugins::Paranoid::Validations::InstanceMethods

Public Instance Methods

validates_unique(*columns) { |ds| ... } click to toggle source

Enhance validates_unique to support :paranoid => true for paranoid uniqueness checking.

Calls superclass method
# File lib/sequel/plugins/paranoid.rb, line 177
def validates_unique(*columns)
  return super(*columns) unless columns.last.kind_of?(Hash) && columns.last.delete(:paranoid)

  opts = self.class.sequel_paranoid_options
  if deleted?
    columns = columns.map { |c|
      case c
      when Array, Symbol
        [ c, opts[:deleted_at_field_name] ].flatten
      else
        c
      end
    }

    super(*columns) { |ds|
      ds = ds.send(opts[:deleted_scope_name])
      block_given? ? yield(ds) : ds
    }
  else
    super(*columns) { |ds|
      ds = ds.send(opts[:non_deleted_scope_name])
      block_given? ? yield(ds) : ds
    }
  end
end