Module: DatabaseValidations::ClassMethods

Defined in:
lib/database_validations/lib/db_belongs_to/belongs_to_handlers.rb,
lib/database_validations/lib/validates_db_uniqueness_of/uniqueness_handlers.rb

Instance Method Summary collapse

Instance Method Details

#db_belongs_to(name, scope = nil, **options) ⇒ Object

rubocop: disable Metrics/AbcSize



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/database_validations/lib/db_belongs_to/belongs_to_handlers.rb', line 4

def db_belongs_to(name, scope = nil, **options)
  Helpers.cache_valid_method!(self)

  @database_validations_storage ||= DatabaseValidations::OptionsStorage.new(self)

  belongs_to_options =
    if ActiveRecord::VERSION::MAJOR < 5
      options.delete(:optional)
      options.merge(required: false)
    else
      options.merge(optional: true)
    end

  belongs_to(name, scope, belongs_to_options)

  foreign_key = reflections[name.to_s].foreign_key

  @database_validations_storage.push_belongs_to(foreign_key, name)

  validates_with DatabaseValidations::DBPresenceValidator,
                 DatabaseValidations::BelongsToOptions.validator_options(name, foreign_key)

  include(DatabaseValidations::Rescuer)
end

#validates_db_uniqueness_of(*attributes) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/database_validations/lib/validates_db_uniqueness_of/uniqueness_handlers.rb', line 3

def validates_db_uniqueness_of(*attributes)
  Helpers.cache_valid_method!(self)

  @database_validations_storage ||= DatabaseValidations::OptionsStorage.new(self)

  options = attributes.extract_options!

  attributes.each do |attribute|
    @database_validations_storage.push_uniqueness(attribute, options.merge(attributes: attribute))
  end

  validates_with DatabaseValidations::DBUniquenessValidator,
                 DatabaseValidations::UniquenessOptions.validator_options(attributes, options)

  include(DatabaseValidations::Rescuer)
end