具有ActiveRecord对象的Ruby减运算符

-3 ruby benchmarking activerecord ruby-on-rails

你能解释一下,Ruby的减号运算符是如何工作的?不只是像5-2这样的小事.有点复杂 - 我们有2个带有ActiveRecord对象的数组:数组A = User.where(...),数组B = User.where(...),我想做A - B,它是如何工作的?它只是比较对象ID,或所有属性,还是其他?

Ser*_*sev 7

它只是比较对象ID吗?

类型和ID,是的.

pry(main)> show-source User#eql?

From: /Users/sergio/.gem/ruby/2.5.1/gems/activerecord-5.2.0/lib/active_record/core.rb @ line 420:
Owner: ActiveRecord::Core
Visibility: public
Number of lines: 6

def ==(comparison_object)
  super ||
    comparison_object.instance_of?(self.class) &&
    !id.nil? &&
    comparison_object.id == id
end
Run Code Online (Sandbox Code Playgroud)

  • @Stefan:对吧?那是香草撬.`show-source User.new.==`.但是,在native/C方法上不能很好地工作. (2认同)