おおいしつかさ


旅行とバイクとドライブと料理と宇宙が好き。
Ubie Discoveryのプログラマ。
Share:  このエントリーをはてなブックマークに追加

破壊メソッドにやられる

今日、仕事で不可解な現象に出会って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  

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