Ruby on Rails | ActiveRecord에서 객체를 ==로 비교하면 모든 속성이 동일한 값인지 확인하지 않습니다.

같다( ==id 가 동등한가 어떤가를 검증한다). RSpec에서는 멈추었으므로 메모.

검증


# ID が同じだと true 
Book.new(id: 1) == Book.new(id: 1)
=> true

# ID が違うと false
Book.new(id: 1) == Book.new(id: 2)
=> false

# ID が同じで title が違っても true
Book.new(id: 1, title: 'サピエンス全史') == Book.new(id: 1, title: 'チョコレートの世界史')
=> true

대책



모든 속성이 동일한 값인지 여부를 확인하려면 attributes를 서로 비교할까요? 더 좋은 방법이있을 것 같습니다. .
Book.new(id: 1, title: 'サピエンス全史').attributes == Book.new(id: 1, title: 'サピエンス全史').attributes
=> true

Book.new(id: 1, title: 'サピエンス全史').attributes == Book.new(id: 1, title: 'チョコレートの世界史').attributes
=> false

환경


  • Rails 4.2.7.1

  • 참고



    Rails를 통한 애자일 웹 애플리케이션 개발 4판

    좋은 웹페이지 즐겨찾기