LoginSignup
6
2

More than 1 year has passed since last update.

Ruby on Rails | ActiveRecord で オブジェクト同士を==で比較した場合、全属性が同値かどうかは検証しない

Last updated at Posted at 2017-02-01

っぽいです(==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によるアジャイルWebアプリケーション開発第4版

image

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

6
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2