1

Hier ist mein BeispielRails Plug and Play Validierungen

class User < ActiveRecord::Base 
    validates_with EmailValidator 
end 

class EmailValidator < ActiveModel::Validator 
    def validate(record) 
    if record != someregex 
     record.errors.add(:email, 'invalid email') 
    end 
    end 
end 

Jetzt habe ich diese EmailValidator für jedes Modell verwenden kann. Aber meine Anforderung besteht darin, ihre Einzigartigkeit und Präsenz auch für dieses spezielle Modell zu bestätigen.

Wenn ich dies erreichen kann, kann ich diese EmailValidator für jedes Modell E-Mail-Validierung mit Funktionen einzigartig, Präsenz verwenden.

Dann kann ich mehr wiederverwendbare Validator erreichen.

Antwort

0

Sie können dies tun, indem Sie Ihr Validator Umschreiben EachValidator sein:

class EmailValidator < ActiveModel::EachValidator 
    def validate_each(record, attribute, value) 
    if attribute !~ someregex 
     record.errors.add attribute, (options[:message] || 'invalid email') 
    end 
    end 
end 

Dann in Ihrem Modell:

validates :email, email: true, uniqueness: true, presence: true 

Hoffnung, das hilft.