我有下面的代碼在我的控制器返回不正確的結果:Rails 3中的「最後」的方法是從ActiveRecord的輸出
@items = Item.where(:user_id => 1).order("updated_at DESC").limit(2)
@oldest_item = @items.last
出於某種原因,我猜這是與我最近做的升級到Rails 3,@oldest_item未被設置爲@items中的最後一項,而是被設置爲與Item.where(:user_id => 1).order("updated_at DESC")
匹配的最後一項。
所以,想象有相匹配的3個項目中,A,B,和C. @items被設置爲[A,B],然後@oldest_item被設置爲C.
奇怪的是,當我從叫我@items.last
視圖中,它正確返回B.
當我從我的控制器兩行到控制檯粘貼,也適當地返回B.
有人能向我解釋到底是什麼去這裏?
您是否曾嘗試在您的控制器中的兩行之間放置一個「調試器」行,並運行一個「ruby腳本/控制檯」,調用您的操作,並深入瞭解發生了什麼?你在做什麼似乎是對的。如果你這樣做:@oldest_item = Item.where(:user_id => 1).order(「updated_at DESC」)。limit(2).last – jefflunt 2011-05-03 01:12:08