2012-03-04 48 views
8

是否有這樣的比較對象的性能增益...比較對象或只是標識

current_user.id == @user.id 

與此...

current_user == @user 

也有最佳實踐的原因做一個不管表現如何?

回答

11

是的,但幾乎沒有ActiveRecord::Base#==做到這一點:

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

基本上比較id秒,但可以確保對象是同一類型,您可能想要自,例如,如果你比較只是id就是他們可能是一樣的,甚至儘管一個是User,另一個是Product

總之,比較模型對象本身是最好的。