破壊メソッドにやられる

Tsukasa OISHI

今日、仕事で不可解な現象に出会って2時間も悩んでしまいました。

class AAA < ActiveRecord::Base
  has_many :items
end

こんなモデルがあって、

 if instance.items.empty?
   ...
 end

関連づけられたitemsが存在するのに、しばらくするとitemsの返り値が空配列になるのです。

  instance.items.size #=> 0
  instance.items.find(:all).size #=> 1以上

という謎の挙動。

原因は違う箇所で

  item = instance.items.shift

というようなことをやっていたためでした。
そういえば以前にも破壊メソッドで罠にハマったことがありました。恥ずかしいかぎりです。