shimgo
5/5/2017 - 12:29 PM

ActiveRecordで検索した結果とその結果を格納した変数をRSpecのto eqで比較するとFalseになる

ActiveRecordで検索した結果とその結果を格納した変数をRSpecのto eqで比較するとFalseになる

Task.allのようにして取得した結果はActiveRecord::Relationになる。
ActiveRecord::Relationはあくまでクエリのwhere句やjoin等に関する情報を
定義したもの。そしておそらくRelation内部でタイムスタンプ等を使用しており、
同じ結果を取得するRelation同士を比較しても、Falseになる。
結果のオブジェクト自体は比較するとTrueになる。

a = Task.all
b = Task.all
a == b # => false
a.to_a == b.to_a # => true