2012-03-04 47 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

总之,比较模型对象本身是最好的。