2012-03-04 29 views
8

Có đạt được hiệu suất trong các đối tượng so sánh như thế này ...So sánh Object Hoặc Chỉ cần ID

current_user.id == @user.id 

so với này ...

current_user == @user 

Cũng đang có lý do thực hành tốt nhất để thực hiện một qua khác bất kể hiệu suất?

Trả lời

11

Có, nhưng hầu như không. ActiveRecord::Base#== thực hiện điều này:

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

Mà về cơ bản so sánh id s nhưng đảm bảo rằng các đối tượng là cùng loại, mà bạn có thể muốn từ đó, ví dụ, nếu bạn so sánh chỉ id s họ thể được như vậy thậm chí mặc dù một là User và một số khác là Product.

Tóm lại, việc so sánh chính các đối tượng mô hình là tốt nhất.

Các vấn đề liên quan