2012-03-04 10 views
8

¿Existe una ganancia de rendimiento en comparar objetos como este ...objeto o sólo los ID

current_user.id == @user.id 

frente a esto ...

current_user == @user 

También hay razones son las mejores prácticas para hacer una sobre el otro, independientemente del rendimiento?

Respuesta

11

Sí, pero apenas. ActiveRecord::Base#== hace esto:

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

que compara esencialmente id s, pero se asegura de que los objetos son del mismo tipo, que es probable que desee, ya que, por ejemplo, si se comparaba sólo id s que podrían ser el mismo, incluso aunque uno es un User y otro un Product.

En conclusión, es mejor comparar los objetos modelo en sí mismos.

Cuestiones relacionadas