比较对象或只是ID

时间:2012-03-04 19:30:15

标签: ruby-on-rails ruby

比较像这样的对象是否有性能提升......

current_user.id == @user.id

与此相比......

current_user == @user

不管性能如何,还有哪种方法可以做到最好?

1 个答案:

答案 0 :(得分:11)

是的,但勉强ActiveRecord::Base#==这样做:

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

本质上比较了id,但确保对象属于同一类型,这可能是您想要的,例如,如果您只比较id他们可以即使一个是User而另一个是Product,也要相同。

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