Sha256: 3fa0480fa3f27dadb2f760130812ce6599ff88f21833c5521ac1d638a25f792c
Contents?: true
Size: 903 Bytes
Versions: 5
Compression:
Stored size: 903 Bytes
Contents
# frozen_string_literal: true class MiniDefender::Rules::Unique < MiniDefender::Rule def initialize(model, column) raise ArgumentError, 'model name must be a string or ActiveRecord::Base' unless model.is_a?(String) raise ArgumentError, 'Column name must be a string' unless column.is_a?(String) @model = model.camelcase.constantize @column = column @ignore = nil end def self.signature 'unique' end def should_ignore(value) @ignore = value self end def self.make(args) raise ArgumentError, 'Model and column are required.' unless args.length == 2 self.new(args[0], args[1]) end def passes?(attribute, value, validator) query = @model.where(@column => value) query = query.where.not(@column, @ignore) unless @ignore.nil? query.exists? end def message(attribute, value, validator) "The value already exists." end end
Version data entries
5 entries across 5 versions & 1 rubygems