module ActiveForm::ValidateUniqueness::ClassMethods
Public Instance Methods
validates_uniqueness_of(attribute, model_name, options = {})
click to toggle source
# File lib/activeform-rails/validate_uniqueness.rb, line 10 def validates_uniqueness_of(attribute, model_name, options = {}) validates_each attribute, options do |form, attr, value| @form = form @model = form.send(model_name) @klass = @model.class @hash = { attribute => value } add_error_message(attribute) if another_model? end end
Private Instance Methods
add_error_message(attribute)
click to toggle source
# File lib/activeform-rails/validate_uniqueness.rb, line 38 def add_error_message(attribute) @form.errors.add(attribute, error_message) end
another_model?()
click to toggle source
# File lib/activeform-rails/validate_uniqueness.rb, line 22 def another_model? @model.persisted? ? another_model_without_itself : any_model? end
another_model_without_itself()
click to toggle source
# File lib/activeform-rails/validate_uniqueness.rb, line 26 def another_model_without_itself @klass.where(@hash).to_a.delete_if { |m| m.id == @model.id }.count >= 1 end
any_model?()
click to toggle source
# File lib/activeform-rails/validate_uniqueness.rb, line 30 def any_model? @klass.exists?(@hash) end
error_message()
click to toggle source
# File lib/activeform-rails/validate_uniqueness.rb, line 34 def error_message I18n.t('activerecord.errors.messages.exclusion') end