Class: DatabaseValidations::UniquenessOptions
- Inherits:
-
Object
- Object
- DatabaseValidations::UniquenessOptions
- Defined in:
- lib/database_validations/validations/uniqueness_options.rb
Instance Attribute Summary collapse
-
#field ⇒ Object
readonly
Returns the value of attribute field.
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
- #message ⇒ Object
- #scope ⇒ Object
- #validates_uniqueness_options ⇒ Object
- #where_clause ⇒ Object
Constructor Details
#initialize(field, options, adapter) ⇒ UniquenessOptions
Returns a new instance of UniquenessOptions.
5 6 7 8 9 10 11 12 |
# File 'lib/database_validations/validations/uniqueness_options.rb', line 5 def initialize(field, , adapter) @field = field @options = @adapter = adapter raise_if_index_missed! unless ENV['SKIP_DB_UNIQUENESS_VALIDATOR_INDEX_CHECK'] end |
Instance Attribute Details
#field ⇒ Object (readonly)
Returns the value of attribute field.
3 4 5 |
# File 'lib/database_validations/validations/uniqueness_options.rb', line 3 def field @field end |
Instance Method Details
#columns ⇒ Object
38 39 40 |
# File 'lib/database_validations/validations/uniqueness_options.rb', line 38 def columns @columns ||= Helpers.unify_columns(field, scope) end |
#handle_unique_error(instance) ⇒ Object
14 15 16 17 18 19 |
# File 'lib/database_validations/validations/uniqueness_options.rb', line 14 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
29 30 31 32 |
# File 'lib/database_validations/validations/uniqueness_options.rb', line 29 def if_and_unless_pass?(instance) ([:if].nil? || condition_passes?([:if], instance)) && ([:unless].nil? || !condition_passes?([:unless], instance)) end |
#key ⇒ Object
34 35 36 |
# File 'lib/database_validations/validations/uniqueness_options.rb', line 34 def key @key ||= Helpers.generate_key(columns) end |
#message ⇒ Object
46 47 48 |
# File 'lib/database_validations/validations/uniqueness_options.rb', line 46 def @message ||= [:message] end |
#scope ⇒ Object
50 51 52 |
# File 'lib/database_validations/validations/uniqueness_options.rb', line 50 def scope @scope ||= Array.wrap([:scope]) end |
#validates_uniqueness_options ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/database_validations/validations/uniqueness_options.rb', line 21 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
42 43 44 |
# File 'lib/database_validations/validations/uniqueness_options.rb', line 42 def where_clause @where_clause ||= [:where] end |