破壊メソッドにやられる
今日、仕事で不可解な現象に出会って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
というようなことをやっていたためでした。
そういえば以前にも破壊メソッドで罠にハマったことがありました。恥ずかしいかぎりです。