Class: DatabaseValidations::UniquenessOptions
- Inherits:
-
Object
- Object
- DatabaseValidations::UniquenessOptions
- Defined in:
- lib/database_validations/uniqueness_options.rb
Instance Method Summary collapse
- #columns ⇒ Object
- #handle_unique_error(instance) ⇒ Object
- #if_and_unless_pass?(instance) ⇒ Boolean
-
#initialize(field, options, adapter) ⇒ UniquenessOptions
constructor
A new instance of UniquenessOptions.
- #key ⇒ Object
- #validates_uniqueness_options ⇒ Object
- #where_clause ⇒ Object
Constructor Details
#initialize(field, options, adapter) ⇒ UniquenessOptions
Returns a new instance of UniquenessOptions.
3 4 5 6 7 8 9 10 |
# File 'lib/database_validations/uniqueness_options.rb', line 3 def initialize(field, , adapter) @field = field = @adapter = adapter raise_if_index_missed! unless ENV['SKIP_DB_UNIQUENESS_VALIDATOR_INDEX_CHECK'] end |
Instance Method Details
#columns ⇒ Object
36 37 38 |
# File 'lib/database_validations/uniqueness_options.rb', line 36 def columns @columns ||= Helpers.unify_columns(field, Array.wrap([:scope])) end |
#handle_unique_error(instance) ⇒ Object
12 13 14 15 16 17 |
# File 'lib/database_validations/uniqueness_options.rb', line 12 def handle_unique_error(instance) = .except(:case_sensitive, :scope, :conditions, :attributes, :where) [:value] = instance.public_send([:attributes]) instance.errors.add([:attributes], :taken, ) end |
#if_and_unless_pass?(instance) ⇒ Boolean
27 28 29 30 |
# File 'lib/database_validations/uniqueness_options.rb', line 27 def if_and_unless_pass?(instance) ([:if].nil? || condition_passes?([:if], instance)) && ([:unless].nil? || !condition_passes?([:unless], instance)) end |
#key ⇒ Object
32 33 34 |
# File 'lib/database_validations/uniqueness_options.rb', line 32 def key @key ||= Helpers.generate_key(columns) end |
#validates_uniqueness_options ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/database_validations/uniqueness_options.rb', line 19 def where_clause_str = where_clause .except(:where) .merge(allow_nil: true, case_sensitive: true, allow_blank: false) .tap { |opts| opts[:conditions] = -> { where(where_clause_str) } if where_clause } end |
#where_clause ⇒ Object
40 41 42 |
# File 'lib/database_validations/uniqueness_options.rb', line 40 def where_clause @where_clause ||= [:where] end |