Sha256: 0987475ce479cfa095b41d25d01bf52d87b7f52effd91b48ab97ed19df5c4f71
Contents?: true
Size: 1 KB
Versions: 2
Compression:
Stored size: 1 KB
Contents
module ActiveForm module ValidateUniqueness def self.included(base) base.class_eval do extend ClassMethods end end module ClassMethods def validates_uniqueness_of(attribute, model_name) @attribute = attribute validates_each attribute do |form, attr, value| @form = form @model = form.send(model_name) @klass = @model.class @hash = { attribute => value } add_error_message if another_model? end end private def another_model? @model.persisted? ? another_model_without_itself : any_model? end def another_model_without_itself @klass.where(@hash).delete_if { |m| m.id == @model.id }.count >= 1 end def any_model? @klass.exists?(@hash) end def error_message I18n.t('activerecord.errors.messages.exclusion') end def add_error_message @form.errors.add(@attribute, error_message) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
activeform-rails-0.0.2 | lib/activeform-rails/validate_uniqueness.rb |
activeform-rails-0.0.1 | lib/activeform/validate_uniqueness.rb |