module ActiveRecord::DatabaseValidations::Validations
Constants
- NOT_NULL_IGNORED
Public Instance Methods
validates_database()
click to toggle source
# File lib/activerecord/database_validations/validations.rb, line 2 def validates_database validates_database_not_null validates_database_unique validates_database_foreign_key end
validates_database_foreign_key(options = {})
click to toggle source
# File lib/activerecord/database_validations/validations.rb, line 33 def validates_database_foreign_key(options = {}) foreign_keys.each do |foreign_key| model = Class.new(ActiveRecord::Base) do self.table_name = foreign_key.to_table end validate do if not self[foreign_key.column].nil? and not model.where(foreign_key.primary_key => self[foreign_key.column]).exists? errors.add(foreign_key.column, options[:message] || :inclusion) end end end end
validates_database_not_null(options = {})
click to toggle source
# File lib/activerecord/database_validations/validations.rb, line 9 def validates_database_not_null(options = {}) columns.reject(&:null).each do |column| next if NOT_NULL_IGNORED.include?(column.name) validation = proc do if self[column.name].nil? errors.add(column.name, options[:message] || :blank) end end if column.extra == 'auto_increment' validate(on: :update, &validation) else validate(&validation) end end end
validates_database_unique(options = {})
click to toggle source
# File lib/activerecord/database_validations/validations.rb, line 26 def validates_database_unique(options = {}) validates_uniqueness_of(primary_key, **options, allow_nil: true) if primary_key indexes.select(&:unique).each do |index| validates_uniqueness_of(index.columns[-1], **options, scope: index.columns[0...-1], if: -> { index.columns.none? { |c| self[c].nil? } }) end end