2013-05-20 9 views
9

मेरे पास एक पुरस्कार मॉडल है। नामांकनकर्ता खुद को एक ड्रॉपडाउन सूची से चुनता है, फिर किसी अन्य ड्रॉपडाउन सूची से NOMINEE का चयन करता है।रेल 3.2 सत्यापन - एकाधिक फ़ील्ड्स

मैं कैसे मॉडल में एक मान्यता के माध्यम से स्वयं नामांकन अस्वीकार कर सकते हैं? दूसरे शब्दों में, नामांकनकर्ता नामांकित चयन सूची से खुद का चयन नहीं कर सकता है।

class Award < ActiveRecord::Base 
    belongs_to :nominator, :class_name => 'Employee', :foreign_key => 'nominator_id' 
    belongs_to :nominee, :class_name => 'Employee', :foreign_key => 'nominee_id' 
    validates :nominator_id, :nominee_id, :award_description, :presence => true 
end 

अग्रिम धन्यवाद!

उत्तर

23

इस प्रयास करें:

class Award < ActiveRecord::Base 

    belongs_to :nominator, :class_name => 'Employee', :foreign_key => 'nominator_id' 
    belongs_to :nominee, :class_name => 'Employee', :foreign_key => 'nominee_id' 

    validates :nominator_id, :nominee_id, :award_description, :presence => true 
    validate :cant_nominate_self 

    def cant_nominate_self 
    if nominator_id == nominee_id 
     errors.add(:nominator_id, "can't nominate your self") 
    end 
    end 
end 

यह एक कस्टम मान्यता है। कस्टम सत्यापन करने के अन्य तरीकों सहित सत्यापन के बारे में अधिक जानकारी Rails Guides में उपलब्ध है। एक कस्टम सत्यापित करें विधि -

+0

यह वही है मेरा सुझाव लिए जा रहा था है। विवरण के लिए http://guides.rubyonrails.org/active_record_validations_callbacks.html#performing- कस्टम- मान्यताओं को देखें। – MrTheWalrus

+0

आपका स्वागत है। और रेल गाइड के बारे में टिप्पणी के लिए @MrTheWalrus धन्यवाद; मैंने एक लिंक जोड़ा –

+0

.... aaaand लिंक 404 है। * फेसपाल्म * – pjmorse

संबंधित मुद्दे