2013-01-07 85 views
0

給定以下代碼,是否有方法來測試迭代是否在最後一個記錄上?我已經給出了一個我想測試的僞代碼。Rails 3.2確定每個塊中的最後一個元素

@shipments.each do |shipment| 
    puts shipment.id 
    puts shipment.desc 

    unless shipment.last? #is there a way to do this line? 
    puts "that was the last shipment" 
    end 
end 
+0

您可以嘗試在控制檯上:'Array.methods',看到你不能。 –

+0

很明顯你不能。這就是我在這裏問的原因。 – ctilley79

+0

一種方法是從循環中刪除這個條件,運行完整的循環,並在使用'@ shipments.last'後立即執行 – daniloisr

回答

1

通過使用#last方法,你可以做這樣的事情,但我相信應該有更好的方式來實現這一目標

@shipments.each do |shipment| 
    puts shipment.id 
    puts shipment.desc 

    unless shipment == @shipments.last #is there a way to do this line? 
    puts "that was the last shipment" 
    end 
end 
1

沒有內置的方法,但是最接近這可能會是這樣的:

unless shipment == @shipments.last 

這是假定你有一組ActiveRecord的結果的工作,因爲如果@shipments是像[1, 2, 3, 2],2這樣的數組將匹配第二個元素和最後一個元素。

相關問題