2012-03-04 16 views
8

वहाँ इस तरह की तुलना वस्तुओं में एक प्रदर्शन के लाभ ...तुलना वस्तु या बस आईडी

current_user.id == @user.id 

इस बनाम ...

current_user == @user 

इसके अलावा वहाँ एक करने के लिए सबसे अच्छा अभ्यास कारण हैं है प्रदर्शन के बावजूद अन्य पर?

उत्तर

11

हां, लेकिन मुश्किल से

def ==(comparison_object) 
    super || 
    comparison_object.instance_of?(self.class) && 
    id.present? && 
    comparison_object.id == id 
end 

कौन सा अनिवार्य रूप से id रों तुलना लेकिन सुनिश्चित करता है कि वस्तुओं एक ही प्रकार है, जो आप शायद के बाद से चाहते हैं, उदाहरण के लिए, अगर आप सिर्फ id रों वे ही और भी हो सकता है की तुलना में कर रहे हैं: ActiveRecord::Base#== करता है हालांकि एक User है और दूसरा Product है।

निष्कर्ष में, मॉडल ऑब्जेक्ट्स की तुलना स्वयं सबसे अच्छी है।

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